从文件读取数据后,Bool结果返回false

时间:2017-04-10 23:09:09

标签: c++

我正在尝试了解有关C ++的更多信息,并获得了验证登录的任务。

到目前为止我已经

#include <iostream>
#include <istream>
#include <fstream>
#include <string>
using namespace std;

void getLogin(string & userName, int password);
bool validateLogin(string userName, int password);
void showResult(bool validation);

int main()
{
    int password = 0;
    string userName;
    bool validation;

    getLogin(userName, password);
    validation = validateLogin(userName, password);
    showResult(validation);

    return 0;
}

void getLogin(string & userName, int password)
{
    cout << "Enter your ID:  ";
    cin >> userName;
    cout << "Enter your PW:  ";
    cin >> password;
}

bool validateLogin(string userName, int password)
{
    string user;
    int pass;
    ifstream inFile;
    inFile.open("C:\\login.txt");
    if (inFile.fail())
    {
        cout << "Error finding file";
        exit(1);
    }
    getline(inFile, user);
    inFile >> pass;

    if (userName == user && password == pass)
    {
        return true;
    }
    else
    {
        return false;
    }
}

void showResult(bool validation)
{
    if (validation == true)
    {
        cout << "Valid\n\n";
    }
    else
    {
        cout << "Invalid\n\n";
    }
}

在login.txt文件中,已经写入了用户名和密码。提示要求用户输入其用户名和密码。当我输入txt文件中的用户名和密码时,它始终显示为无效。 Link to output and login.txt

1 个答案:

答案 0 :(得分:1)

假设您确实希望使用int作为密码,问题出现在此函数声明和定义中:

void getLogin(string & userName, int password);

password参数更改为引用,类似于userName参数,一切都应该没问题。将声明更改为:

void getLogin(string & userName, int & password);

然后更改定义以匹配。