从C ++中的文本文件依次检查用户名和密码

时间:2019-02-19 02:41:44

标签: c++ visual-c++

我没用过fstream,所以我有点迷路了。我创建了一个文本文件,其中包含一个随机单词列表,我希望将其用作程序的用户名和密码列表。

我希望程序检查用户是否存在(该行中的第一个字符串),然后检查该用户之后的第二个单词是否“匹配”。

到目前为止,我有这个:

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

using namespace std;

int main()
{
    ifstream inFile;
    inFile.open("userData.txt");

    // Check for error
    if (inFile.fail()) {
        cerr << "error opening file" << endl;
        exit(1);
    }

    string user, pass;
    int Count = 0;

    // Read file till you reach the end and check for matchs
    while (!inFile.eof()) {
        inFile >> user >> pass;
        if (user == "Banana", "Apple") {
            Count++;
        }
        cout << Count << " users found!" << endl;
    }
}

我的文本文件包含:

Banana Apple /n
Carrot Strawberry /n
Chocolate Cake /n
Cheese Pie /n

我现在的代码不好,但是我真的不知道我在做什么。

1 个答案:

答案 0 :(得分:1)

阅读以下内容:

while (!inFile.eof()) {
    inFile >> user >> pass;
    if (user == "Banana", "Apple") {
        Count++; // No point in doing so because this only happens once
    }
    cout << Count << " users found!" << endl;
}

使用while (inFile >> user >> pass){代替while (!inFile.eof()){Why?

尝试以下方法:

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

using namespace std;

int main()
{
    ifstream inFile;
    inFile.open("userData.txt");

    // Check for error
    if (inFile.fail()) {
        cerr << "error opening file" << endl;
        exit(1);
    }

    string user, pass;
    int Count = 0;

    // Read file till you reach the end and check for matchs
    while (inFile >> user >> pass) {
        if (user == "Banana" && pass == "Apple") {
            cout <<"user found!" << endl;
        }
    }
}