背景:
已设定好密码,输入密码,正确显示“Yes!”,错误提示“Wrong ,try again:”,三次错误显示“You dead!”。
特殊问题:
输入密码需要没有回显,而没有回显的函数时 getch(),而不是getchar(),其头文件所在:#include <conio.h>
如果遇到输入空字符串,也应按输入错误处理。但直接设定一个string并使用cin获得内容,就无法与\n比较。会报错。
这里采用方法是,单个单个字符地读入和判断,如果输入的是回车,就判断是否与密码相同,是否超出了可输入密码的次数,如果输入的不是回车,就更新输入的密码。所以,最外层要先判断是不是回车。
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
//i用来判断输入错误的次数
int main()
{
int i=0;
//初始化一个空字符串,s是密码字符串
string pwd="",s="123456";
cout<<"input password:";
char c;
while(true)
{
c=getch();
if(c!=13)//如果不是回车,就不断往string类型的pwd内添加c
{
pwd=pwd+c;
cout<<"*";
}else{
if(pwd==s)
{
cout<<"Yes!"<<endl;
break;
}else{
++i;
if(i==3){
cout<<"Dead!";
break;
}else{
cout<<"Wrong:Try Again!"<<endl;
pwd="";
}
}
}
}
}