gpt4 book ai didi

c++ - 在c/c++中清除用户输入缓冲区

转载 作者:行者123 更新时间:2023-11-30 17:31:03 26 4
gpt4 key购买 nike

我想清除输入缓冲区,但不知道如何操作,代码如下,请自行尝试:

#include <windows.h>

using namespace std;

int main()
{
do {
Sleep(500);
if (kbhit())
cout << (char) getch() << endl;
} while(1);
}

如果我乱按键盘,字母会一一打印,每个延迟 500 毫秒。

How do I clear whole input buffer and only one letter will appear even if I press multiple

最佳答案

所以您正在编写一个 Windows 控制台应用程序。不是 DOS,也不跨平台兼容。

您可以使用 Windows 控制台功能。请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073%28v=vs.85%29.aspx

特别是,您可以使用 GetStdHandle 获取句柄,然后使用句柄上的 WaitForSingleObject 获取句柄。可能有 500 毫秒的超时,而不是当前的 sleep 。

然后您应该能够 ReadConsole 读取自上次读取以来已缓冲的所有输入。如果您想要第一个字符或最后一个字符,您只需选择那个即可。

您需要添加很多细节才能使其真正发挥作用。

关于c++ - 在c/c++中清除用户输入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24814825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com