清除GetKeyState()之后的控制台输入



我有一个控制台登录系统,用于在按下'1'后创建用户名。但是每当我按下那个键时,按下的键就会显示在控制台输入中。我想把它去掉

#include <Windows.h>
bool pressed1;
std::string inputUsername;

do
{
pressed1 = GetKeyState('1') & 0x8000;
if (pressed1) {
std::cout << "nPressed '1' enter username: ";
std::cin >> inputUsername;
}
} while (!pressed1);

所以当执行并按下'1'时,控制台显示:

Pressed '1' enter username: 1

如何在输入中摆脱按下的按钮?

您可以使用FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))

#include <Windows.h>
#include <string>
#include <iostream>
void main()
{
bool pressed1;
std::string inputUsername;
do
{
pressed1 = GetKeyState(VK_F1) & 0x8000;
if (pressed1) {
std::cout << "nPressed 'F1' enter username: ";
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
std::cin >> inputUsername;
}
} while (!pressed1);
}

参见前面的答案。

相关内容

最新更新