【问题标题】:Password Masking(not duplicate)密码屏蔽(不重复)
【发布时间】: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 不是编译器。这是一个编辑器。
  • using namespace std; is a bad practice,永远不要使用它。
  • 另外,请说明您的预期行为和问题。

标签: c++ passwords hide mask masking


【解决方案1】:

呃。我找到了最简单的解决方案。 设置>编译器>重置默认值 :|

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 2011-02-01
    • 2011-06-04
    • 1970-01-01
    • 2016-01-21
    • 2017-10-02
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多