我将软件设为自动柜员机,因此当用户尝试输入密码时,用户只会看到*******
,但在尝试删除时,它不会删除字符。它只是添加了一个新的。这是我的代码:
string password2 = "";
cout << "PASSWORD: ";
ch = _getch();
while(ch != 13) //character 13 is enter
{
password2.push_back(ch);
cout << '*';
ch = _getch();
}
而且,我尝试使用pop_back();
,但它也不起作用。请有人帮帮我吗?
答案 0 :(得分:0)
做了一点魔术并创造了这个: 我必须承认,我不喜欢这种风格......但它“有效”!
#include<iostream>
#include<string>
#include <conio.h>
bool verify_pass(const std::string& pass)
{
std::string input = "";
char ch = '0';
while(true)
{
ch = getch();
if(ch == '\b')
{
if(input.size() > 0)
{
input.erase(input.begin() + input.size() - 1); // erase last char
std::cout << "\b \b";
}
}
else if(ch != '\r\n' && ch != '\n' && ch != '\r')
{
input += ch;
std::cout << '*';
}
else
break;
}
return input == pass;
}
int main()
{
std::string insecurePass = "1234";
std::cout << "Enter Password: ";
if(verify_pass(insecurePass))
std::cout << "\nCorrect!\n";
else
std::cout << "\nFalse!\n";
}
顺便说一下,你可以使用像我使用字符串的向量,但是使用push_back而不是+ =和pop_back()应该也可以使用push而不是我的方法。