在按下 Enter 之前,在控制台上清除用户输入
Clear user input on console before enter is pressed
我正在尝试编写一个主机游戏,玩家应该能够打开宝箱。为此,用户需要在面对胸部时按"E"(对问题并不重要,只是提供上下文),然后出现一个菜单,要求输入 cin。
因此,我使用GetAsyncKeyState("E")来检测"E"键。一切都按计划进行,当按下"E"并打开"库存菜单"时会触发。问题是现在用户已经向控制台写入了一个"e"(或多个)。 我希望这种情况不会发生,因为用户必须退格才能输入所需的输入。
if(GetAsyncKeyState('E')){
int choice;
cout << "Inventory Menu" << endl;
cout << "1 - Take item" << endl;
cout << "2 - Store item" << endl;
cin >> choice; //there's already an 'e' on the console
}
我找到了问题的答案。
标准库不允许这样做,因为它只为基本 I/O 而设计。
但由于我已经在使用 WinAPI,因此有一种方法可以刷新输入缓冲区:FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
类似问题的原始答案:http://www.cplusplus.com/forum/general/159796/
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- TicTacToe游戏,用户再次玩游戏后板不清除
- 永远循环..未正确清除用户输入
- 以下代码运行后,如何在程序再次运行之前清除用户声明的变量 empName
- 在按下 Enter 之前,在控制台上清除用户输入
- 如果用户要求重复程序,我该如何清除以前计算的数据?C
- 当用户输入错误输入时,一次清除 cin 中的整行而不是一个字符
- 清除c / c++中的用户输入缓冲区
- 如何完全清除所有的用户环境变量在Windows c++