Как правильно сопоставить пароль из файла для ввода пользователя в C ++? - PullRequest
0 голосов
/ 28 апреля 2018

Я должен прочитать пароль из текстового файла и сравнить его с вводом пользователя. Если ввод совпадает с паролем из текстового файла, программа должна напечатать сообщение «Вход успешно!».

Однако моя программа всегда печатает «Ошибка входа в систему», даже если введенный пароль совпадает с паролем в файле. Я попробовал это пару раз и чувствую, что что-то не так с тем, как я открыл файл. Где моя ошибка?

#include <iostream>
#include <string>
#include <fstream>


int main() {
std::string password;
std::string mypassword;
std::ifstream input;

input.open("text.txt");
input >>mypassword;

std::cout<<"Please enter your password: "<< std::endl;
std::cin>>password;

if (password == mypassword){
    std::cout<<"Login successful!"<<std::endl;
} 

else {
    std::cout<<"Login failed!"<<std::endl;
}

input.close();
return 0;
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Убедитесь, что вход не вышел из строя. Кроме того, input.close(); является избыточным в конце программы. Файл закроется сам в любом случае. Объявите переменные как можно ближе к точке их инициализации. Отформатируйте ваш код.

#include <iostream>
#include <string>
#include <fstream>

int main() {
    std::ifstream input("text.txt");
    std::string mypassword;
    if(!(input >>mypassword) || mypassword.size() == 0 ){
        std::cout << "Could not read password from input file\n";
        return -1;
    }

    input.close();

    std::cout<<"Please enter your password: "<< std::endl;
    std::string password;
    std::cin>>password;

    if (password == mypassword){
        std::cout<<"Login successful!"<<std::endl;
    } 

    else {
        std::cout<<"Login failed!"<<std::endl;
    }

    return 0;
}
0 голосов
/ 28 апреля 2018

Необходимо убедиться, что файл, в котором вы сохранили пароль, в данный момент существует в текущем рабочем каталоге. Плюс проверьте, успешно ли он открыт.

input.open("text.txt");
if(input.is_open())
{
    input >>mypassword;

    cout<<"Please enter your password: "<< endl;
    cin>>password;

    if (password == mypassword)
        cout<<"Login successful!"<<endl;

    else
        cout<<"Login failed!"<<endl;
}
else
    cout <<"File not found!";
input.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...