大多数人都知道 getch 等到用户点击一个键然后返回该值。有没有办法只检查用户当前是否正在按键?这是我正在尝试做的事情:
while(1){
char x = getch();
if (x){
//blah
}
else if(y == true){
//blah
}
}
有什么建议么?
大多数人都知道 getch 等到用户点击一个键然后返回该值。有没有办法只检查用户当前是否正在按键?这是我正在尝试做的事情:
while(1){
char x = getch();
if (x){
//blah
}
else if(y == true){
//blah
}
}
有什么建议么?
有这个kbhit()
功能(或者_kbhit()
如果你正在使用微软的库)。
MSDN: http: //msdn.microsoft.com/en-us/library/58w7c94c (VS.80).aspx
“如果某个键被按下,_kbhit 返回一个非零值。否则,它返回 0。”
编辑:正如一些评论者指出的那样,这不是标准的。
如果您只是想暂停脚本直到按下某个键,那么 getch 可以工作,但是如果您希望他们按下的角色不出现在屏幕上(或者您不关心他们按下了哪个键),您可以使用
system("pause > NUL");
它调用Windows“暂停”命令并将显示的文本和输入(通常它说“按任意键继续...”)路由到一个空的深渊。
另一种方法是使用 GetAsyncKeyState() 之类的函数并遍历所有输入代码以查看当前是否正在按下任何键。如果您尝试运行处理循环并希望在用户按下特定键(例如,Escape)时中断,则此方法效果更好。使用它来查看用户是否按下了任何键会浪费大量的处理能力。