【发布时间】:2018-04-25 17:37:11
【问题描述】:
编译器代码::块 操作系统(OS)-Windows
我编写了一个非常简单的密码屏蔽程序,不像互联网上的复杂程序。当我构建并运行我的代码时,它显示“输入密码”但不允许我输入任何内容。
密码屏蔽是指当我输入密码时,它会显示为 **** 就像在电子邮件中一样被输入。(每个字符一个 *)
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int main()
{
string pass;
cout << "Enter password";
for (int i=0; i<100; i++)
{
char ch = getch();
if (ch == 13)
break;
if (ch == 8)
{
if (pass.size())
{
cout << "\b \b";
pass.pop_back();
}
}
else
{
cout << "*";
pass += ch;
}
}
cout << "pass = " << pass << '\n';
}
【问题讨论】:
-
在 Windows 7 上使用 TDM-GCC 5.1.0 没有错误,标准命令提示符。 (您使用的是什么编译器/版本?)您可能想尝试
cin.sync_with_stdio(true)看看是否会有所不同。 (Conio 的东西需要额外的古怪才能在幕后正常工作。) -
我写了一个非常简单的密码屏蔽程序,与互联网上的复杂程序不同。 -- 我想你现在明白为什么互联网上的程序“复杂”了。控制台 I/O 并不像您想象的那么简单。
-
Code::Blocks 不是编译器。这是一个编辑器。
-
另外,请说明您的预期行为和问题。
标签: c++ passwords hide mask masking