Ошибка с проверкой имени пользователя / пароля в C++

В настоящее время я пытаюсь выучить немного базового программирования на 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();

}

Любая помощь или критика очень ценится.

1 ответ

Решение

Ваше имя пользователя включает символ новой строки '\n' после первой попытки из-за getline

Изменение вашего использования Cin от

getline( cin, username, ' ');
cin>>password;

в

cin >> username;
cin >> password;

исправляет вашу проблему

Другие вопросы по тегам