我正在使用用户输入密码的控制台应用程序。当然,我想通过显示*而不是输入来掩盖它。所以这就是我所做的功能。但它所做的只是隐藏所有回声。它仅在我重置控制台模式后显示*。任何帮助表示赞赏。代码:
void mask(std::string &s)
{
char c;
s.clear();
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hStdin, &mode);
SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));
c = getchar();
while (c != '\n')
{
s.push_back(c);
std::cout << "*";
c = getchar();
}
SetConsoleMode(hStdin, mode);
}
P.S。我正在运行Windows 10,我的IDE是2017 Visual Studio社区版。