В настоящее время я пытаюсь выучить немного базового программирования на C ++ и решил сделать из себя 3-х попыток проверки имени пользователя и пароля, чтобы практиковать кое-что из того, о чем я читал. Проблема в том, что когда я запускаю программу и сначала вводю неправильное имя пользователя и пароль, программа больше не будет распознавать правильные имя пользователя и пароль, если они были введены со второй или третьей попытки. Я смотрю на это уже довольно давно и не могу заставить его работать.
Я даже включил закомментированную строку, чтобы убедиться, что программа читает правильные входные данные, что и есть.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int attempts=0;
string username, password;
while (attempts < 3)
{
cout<<"\nPlease enter your username and password seperated by a space.\n";
getline( cin, username, ' ');
cin>>password;
if (username == "Ryan" && password == "pass")
{
cout<<"\nYou have been granted access.";
return 0;
cin.get();
}
else
{
attempts++;
//cout<<username <<" " <<password << "\n";
cout<<"Incorrect username or password, try again.";
cout<<"\nAttempts remaining: "<<3-attempts <<"\n";
}
}
cout<<"\nOut of attempts, access denied.";
cin.get();
}
Любая помощь или критика очень ценится.
Ваше имя пользователя включает символ новой строки ‘\ n’ после первой попытки из-за getline
Изменение вашего использования Cin от
getline( cin, username, ' ');
cin>>password;
в
cin >> username;
cin >> password;
исправляет вашу проблему