最近在用C++
编写一个图书管理系统, 其中需要用户的登录, 原来没有想太多, 就用了普通的cin
输入, 但是前两天组里的同学说, 要是输入密码的时候能将其隐藏就好了。以前做网站的时候, 有各种标签属性可以很方便的实现这个功能, 但是现在是控制台…不知道怎么搞了。最后百度谷歌后发现了一个很神奇的函数
实现
简而言之, 就是使用C++
的getch()
函数, 注意不是getchar
, 这个函数可以使用户的输入不显示在屏幕上, 其包含在conio.h
头文件中, 下面看代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| static void inputPassword(string &str, int size) { char c; int count = 0; char *password = new char[size]; while ((c = getch()) != '\r') {
if (c == 8) { if (count == 0) { continue; } putchar('\b'); putchar(' '); putchar('\b'); count--; } if (count == size - 1) { continue; } if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) { putchar('*'); password[count] = c; count++; } } password[count] = '\0'; str = password; delete[] password; cout << endl; }
|
为方便对其操作, 我使用了string
, 其中需要进行char*
和string
的转换
项目地址
https://github.com/Waydrow/Library