天天看点

c++控制台输入密码模式

首先要包含以下几个头文件:

#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;

}

//例子完

继续阅读