1

大多数人都知道 getch 等到用户点击一个键然后返回该值。有没有办法只检查用户当前是否正在按键?这是我正在尝试做的事情:

while(1){
char x = getch();
if (x){
//blah
}
else if(y == true){
//blah
}
}

有什么建议么?

4

2 回答 2

2

有这个kbhit()功能(或者_kbhit()如果你正在使用微软的库)。

MSDN: http: //msdn.microsoft.com/en-us/library/58w7c94c (VS.80).aspx

“如果某个键被按下,_kbhit 返回一个非零值。否则,它返回 0。”

编辑:正如一些评论者指出的那样,这不是标准的。

于 2010-10-17T19:59:29.160 回答
0

如果您只是想暂停脚本直到按下某个键,那么 getch 可以工作,但是如果您希望他们按下的角色不出现在屏幕上(或者您不关心他们按下了哪个键),您可以使用

system("pause > NUL");

它调用Windows“暂停”命令并将显示的文本和输入(通常它说“按任意键继续...”)路由到一个空的深渊。

另一种方法是使用 GetAsyncKeyState() 之类的函数并遍历所有输入代码以查看当前是否正在按下任何键。如果您尝试运行处理循环并希望在用户按下特定键(例如,Escape)时中断,则此方法效果更好。使用它来查看用户是否按下了任何键会浪费大量的处理能力。

于 2010-10-17T22:18:49.197 回答