C ++,监视键盘input

我正在学习一般的编程技巧,而且遇到了一些麻烦。 我正在编写一个程序,模拟bunnys的殖民地。 一旦这个程序启动,它是自治的,但是,在任何时候,用户应该能够按下'k'键来剔除一半的人口。 如果不暂停程序来等待用户input,我想不出一个办法。 我也不能想到一种方法来使程序能够立即响应(程序使用睡眠命令以半实时方式运行)。 有没有一种方法来实现这一点,没有多方面和多年的经验?

我认为这篇文章接近你想做的不涉及ncurses的w / o。

看看@ GetAsyncKeyState Windows API调用。 你应该能够找到一个合适的地方来将这个脚本压入你的代码来检测按键。

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

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

编辑:正如Zan Lynx所说,这不是标准的C ++,甚至是标准的C,这就是为什么没有标题。 它将在Visual C ++或DOS C ++编译器中正常工作。

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

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

C ++不知道任何有关键盘的信息,所以任何答案都取决于你的操作系统和库。