Pre*_*ity 0 c++ linux user-input
可能的重复:
从 std::cin 读取密码
我正在尝试制作一个简单的密码程序,以便熟悉 C++,但我遇到了一些问题。在此代码中,我要求用户输入他们选择的密码,然后他们输入它。我想要编码做的是隐藏输入(不是用 *s 替换它),但仍然显示光标,以及输入密码之前和之后的文本,如下所示:
Please enter password: [don't show input]
Please re-enter password: [don't show input]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我使用的是 Linux,所以我无法使用任何 Windows 库(windows.h 等)。
您不能直接使用 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);
}
Run Code Online (Sandbox Code Playgroud)