0

可能重复:
从 std::cin 读取密码

我正在尝试制作一个简单的密码程序,以便熟悉 C++,但我遇到了一些问题。在这段代码中,我要求用户输入他们选择的密码,然后他们输入密码。我想做的代码是隐藏输入(不是用 *s 替换它),但仍然显示光标,以及上面的文本,输入密码之前和之后,像这样:

Please enter password: [don't show input]
Please re-enter password: [don't show input]

我怎样才能做到这一点?我使用的是 Linux,所以我将无法使用任何 Windows 库(windows.h 等)。

4

2 回答 2

4

您不能直接使用 cin 执行此操作。你必须“降低”。尝试调用这些函数:

#include <termios.h>

...

void HideStdinKeystrokes()
{
    termios tty;

    tcgetattr(STDIN_FILENO, &tty);

    /* we want to disable echo */
    tty.c_lflag &= ~ECHO;

    tcsetattr(STDIN_FILENO, TCSANOW, &tty);
}

void ShowStdinKeystrokes()
{
   termios tty;

    tcgetattr(STDIN_FILENO, &tty);

    /* we want to reenable echo */
    tty.c_lflag |= ECHO;

    tcsetattr(STDIN_FILENO, TCSANOW, &tty);
}
于 2012-12-04T00:27:24.120 回答
0

您需要调用tcsetattr和修改ECHO标志。

于 2012-12-04T00:26:05.340 回答