我正在编写一个C ++ CLI应用程序,如何检测用户是否按下任何键。我在c#中看到了这一点,但它如何在c ++中实现
while(1)
{
while(/* code to check if any key is pressed*/)
{ //rest of the code
// sleep function
}
}
提示:就像在CLI游戏中移动或在按下某个键时采取某些动作,或者如果没有给出任何输入则不做任何事情。
答案 0 :(得分:0)
在Windows上至少可以使用GetKeyState
答案 1 :(得分:0)
我们可以在c ++中使用_kbhit()函数。如果按任何键,则_kbhit等于1。您必须清除_kbhit缓冲区,否则它将保留1.清除方法是character = getch();这将保存最后输入的字符,您可以比较该字符,并决定对哪个键执行哪个操作。
答案 2 :(得分:-1)
虽然循环可以消耗CPU,但我不建议忙于等待的方法,而应该考虑事件挂钩。
在这里,您可以阅读有关winapi击键事件挂钩C++ Win32 keyboard events
的信息如果您仍然有兴趣使用while循环,那么在检查条件是否为假(例如nanosleep)后,您还应该通过休眠释放一些资源