呵呵,所以我使用的是上述Windows功能,幸运的是,这些功能适用于Windows 2000及更高版本,但是在控制台上进行游戏时,我遇到了一个问题:按下按键后,控制台就会通过kbhit( )功能,无论是否再次按下一个键...
有什么方法可以清除键盘按键缓冲区,以便在没有新按键的情况下无法通过kbhit?
如果需要下载新的lib,我想我可以...但是我希望使用Windows标准方式!
谢谢!!
最佳答案
谁告诉您kbhit()
是Windows函数会误导您。 kbhit()
, getch()
and their relatives are actually part of the (C language bindings to the) MS-DOS API.它们在OS / 2,Win32和其他C / C ++编译器的运行时库中的存在只是为MS / PC / DR-DOS程序提供了移植帮助。该库将它们映射到用于访问键盘的任何本机机制(如果有的话),并且通常仅以正确的方式使TUI(而不是GUI)应用程序访问键盘。
如果要编写新的TUI应用程序,请不要使用MS-DOS API。为目标平台使用正确的本机API,例如Win32 Console API或OS/2 Console API或POSIX General Terminal Interface(通过ncurses或类似工具)。
当您这样做时,您将阅读他们的文档,并了解在执行非破坏性的“窥视”之后如何执行破坏性的“ get”键盘输入。或者实际上,如果您要执行此操作,则如何全部刷新缓冲区。
关于c++ - 如何在使用kbhit()和getch()时清除键缓冲区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5862770/