📅  最后修改于: 2023-12-03 15:37:34.386000             🧑  作者: Mango
在C++中以密码作为输入是一种常见的需求,它可以用于保护用户输入的敏感信息,例如银行账号密码、用户密码等。在本文中,我们将介绍如何实现在C++中以密码作为输入。
首先,我们需要禁止用户输入的明文显示在终端上。我们可以使用以下代码来达到这个效果:
#include <iostream>
#include <string>
#include <conio.h> // for getch() and getche()
// Disable console echo
void DisableConsoleEcho()
{
DWORD mode;
HANDLE handle = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(handle, &mode);
SetConsoleMode(handle, mode & ~ENABLE_ECHO_INPUT);
}
// Enable console echo
void EnableConsoleEcho()
{
DWORD mode;
HANDLE handle = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(handle, &mode);
SetConsoleMode(handle, mode | ENABLE_ECHO_INPUT);
}
int main()
{
std::string password;
std::cout << "Enter password: ";
DisableConsoleEcho(); // Disable echo
getline(std::cin, password);
EnableConsoleEcho(); // Enable echo again
std::cout << "\nEntered password: " << password << std::endl;
return 0;
}
这段代码使用了Windows API函数GetStdHandle()、GetConsoleMode()和SetConsoleMode()来禁止/启用控制台的输入回显功能。我们可以使用conio库中的getch()和getche()函数来读取键盘输入,它们与标准输入/输出流无关。
我们也可以在Linux或MacOS上使用类似的方法来禁用终端回显,例如使用termios库中的tcgetattr()和tcsetattr()函数。
在C++中以密码作为输入是一种简单而有效的方法,可以保护用户输入的敏感信息。我们通过禁止/启用控制台回显来实现密码输入,这可以防止用户的密码被明文显示出来。