我有这个 c++ 程序来接受用户名和密码(被屏蔽)并将它们与预设值进行比较。如果它们相同,则程序关闭,否则循环回到开头。
我在输入密码时遇到了一些困难,尤其是在模仿正常输入时。到目前为止,我已经设法放置了 Enter 和 Backspace 功能,但我似乎无法正确使用箭头键。
使用下面的代码,程序确实部分正确地工作,当然,当按下左键时,它会将光标向后移动两次。但在此过程中,它还会用“alpha”符号替换它所在的当前字母,用“K”替换前一个字母。(K 和相邻的字母符号似乎是我的编译器 dev c++ 与左箭头键关联的值)
此外,当我删除额外的“\ b”时,光标根本不会移动,并且还会用“K”替换前一个字母。我现在不知道该怎么办,所以我问你。提前致谢!
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <windows.h>
using namespace std;
int main()
{
int i=0;string u;char parr[i+1],ch;
while (1)
{
system("cls");
cout<<"Enter username."<<endl;
cin>>u;
system("cls");
cout<<"Enter password."<<endl;
i=0;
while (1)
{
ch=getch();
if (ch=='\r') break;
if (GetAsyncKeyState(VK_LEFT)) cout<<'\b'<<'\b';
if (ch=='\b')
{
cout<<'\b';
while (i!=0) {--i;}
ch='\0';
parr[i]='\0';
cout<<' '<<'\b';
continue;
}
parr[i]=ch;
ch='*';
cout<<ch;
++i;
}
parr[i]='\0';
string p="password";
if (u=="username" && parr==p)
{
system("cls");
cout<<"Welcome!";
break;
}
else
{
system("cls");
cout<<"Username and password entered does not match! Please try again.";
}
getch();
}
getch();
}