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