首先要包含以下几个头文件:
#include<iostream> //输入输出头文件
#include<string> //字符串处理头文件
#include<conio.h> //下面做详细讲解
conio.h:
conio.h不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。大部分DOS,Windows 3.x,Phar Lap,DOSX,OS/2 or Win32平台上的C编译器提供此文件,UNIX 和Linux平台的c编译器通常不包含此头文件。
秘密在于conio.h中的getch()从键盘中读取字符时,并不会在屏幕上输出已经输入的字符,
请注意:在密码模式输入的退格键也会被当成密码,所以在用户输入退格键时就要从密码里删去一个字符。
实现输入空格就从屏幕上删去一个*的代码如下:
_cprintf("\b \b");
举一个小例子:
//Password.cpp:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
string User_Password;
cout << "Please enter the User password:" << endl;
char a;
while ((a = getch()) != 13) //这个循环是来判断用户是否输入回车,输入回车以后就意味着密码输入完毕。
{
if (a == 8)
{
User_Password = User_Password.substr(0, User_Password.length() - 1); //从User_Password里面删除上一个输入的字符。
//如果看不懂substr和Length,去网上查,推荐看《c++ STL 标准程序库开发指南》的第二章,我不是在打广告。
_cprintf("\b \b"); //输出退格
}
else
{
User_Password += a; //因为a只是临时记录字符用的,所以要把a里面的字符插入到User_Password里面。
cout << '*'; //这里可以把*换成其他字符。
}
}
cout << endl << User_Password.c_str(); //输出密码
cin.get();
return 0;
}
//例子完