【问题标题】:C++, monitor for keyboard inputC++,键盘输入监视器
【发布时间】:2010-08-02 22:28:10
【问题描述】:

我正在复习我的一般编程技能,但遇到了一个障碍。我正在编写一个模拟一群兔子的程序。然而,一旦这个程序启动它是自主的,在任何时候用户都应该能够按“k”键将人口剔除一半。如果不暂停程序以等待用户输入,我想不出办法做到这一点。我也想不出一种方法来使程序立即响应(程序使用 sleep 命令以半实时方式运行)。有没有一种方法可以在没有多方面的经验和多年经验的情况下实现这一目标?

【问题讨论】:

标签: c++ unix input


【解决方案1】:

我认为这个 article 接近你想要做的不涉及 ncurses 的事情。

【讨论】:

    【解决方案2】:

    C++ 对键盘一无所知,因此对此的任何回答都取决于您的操作系统及其库。

    【讨论】:

    • 知道我应该从哪里开始寻找吗?
    • 告诉我们您希望此代码在什么操作系统下运行。
    • 这个答案应该是评论。
    • *nix 是我正在使用的 a.t.m.
    【解决方案3】:

    看看@GetAsyncKeyState Windows API 调用。您应该能够找到一个合适的位置将其硬塞到您的代码中以检测按键。

    【讨论】:

    • 注意 tpdis 评论 - 绝对正确 - 我假设是 Windows。
    • 对 *nix 系统了解多少?
    【解决方案4】:

    我不确定这是否是标准 C++,但您可以使用 C 函数来检查密钥是否可用:

    #include <conio.h>
    
    int wmain()
    {
        if(_kbhit())
        {
            char ch = _getch();
        }
    }
    

    编辑:正如 Zan Lynx 所提到的,这不是标准 C++,甚至不是标准 C,这就是没有标题的原因。它可以在 Visual C++ 或 DOS C++ 编译器中正常工作。

    【讨论】:

    • 它不是标准的,仅适用于 Windows。
    【解决方案5】:

    像 Qt 这样的库可以帮助你不少。您将创建一个派生自QCoreApplication 的“应用程序”对象。在您覆盖QCoreAPplication::event(Event*) 时,如果它是包含Qt::Key_KQKeyEvent,您将处理该事件。它可以在 Windows、Mac 和 Linux 上移植。

    【讨论】:

      【解决方案6】:

      试试 ncurses,它在 UNIX 环境中非常标准。它具有特殊功能,可以在没有人按任何键的情况下等待用户输入超时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多