如何屏蔽控制台输入并仍然输出到控制台:C ++ 11

时间:2018-03-08 07:30:10

标签: c++ windows c++11 console-application password-protection

我正在使用用户输入密码的控制台应用程序。当然,我想通过显示*而不是输入来掩盖它。所以这就是我所做的功能。但它所做的只是隐藏所有回声。它仅在我重置控制台模式后显示*。任何帮助表示赞赏。代码:

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社区版。

0 个答案:

没有答案