我已經使用此功能進行了使用密碼的簡單登錄。當我第一次嘗試使用正確的密碼時,它會正常工作,然後當我使用我所有的嘗試時,它也按預期工作。但是,如果我在第一次嘗試中使密碼錯誤,它將不會在第二次和第三次嘗試時接受正確的密碼。登錄功能,如果第一次嘗試時代碼不對,則不會登錄
下面的代碼:
void login(string password)
{
string input;
int loginAttempt = 0;
int RightPassword = 0;
cout << "Hello! To use the Home Automation System, please login." << endl;
while (RightPassword == 0)
{
cout << "\nEnter your user password: ";
char temp;
while(true) /* Infinite loop, exited when RETURN is pressed */
{
temp = getch(); /* Get the current character of the password */
if (GetAsyncKeyState(VK_RETURN))
{
break;
}
input += temp;
cout << '\01'; /* Print a smiley */
}
for (int i = 0; i <= input.length(); i++)
{
if (input[i] != password[i])
{
++loginAttempt;
cout << "\nWrong password, " << 3 - loginAttempt << " attempts left." << endl;
break;
}
RightPassword = 1;
}
if (loginAttempt == 3)
{
cout << "Too many login attempts! The program will now terminate.";
exit(1);
}
cin.clear();
}
system("CLS");
cout << "Welcome user! Thank you for logging in.\n";
}
我也希望有辦法用退格鍵刪除前一個字符,而不是作爲一個字符計數,當我鍵入密碼。你能幫忙嗎?
非常感謝!
你真棒,謝謝!你能幫我解決我的另一個問題嗎? – Thisen
'cout <<'\ b'; //返回一個字符' 'cout <<「\ 01」; //寫出笑臉'這會覆蓋以前輸入的字符。 – JasonSec
cout <<'\ b';似乎不起作用,它只是不會寫字符。 :d – Thisen