如何从文件中读取数据并将文件中的名称存储在一个向量中,并将文件中的分数存储在另一个向量中?

How to read data from a file and store the names from the file in one vector, and the scores from the file in another?

我的提示是: 在这个程序中,我们将从一个名为 student.txt。此文件已提供给您。您必须使用两个向量变量,一个用于存储 学生姓名,另一个存储学生分数。

引用的文本文件格式如下:

詹姆斯 80

弗兰克 67

珍妮 95

我正在努力理解如何从一个文件中读取两个变量并将其存储到两个向量中,所以如果我目前所掌握的内容没有意义,我也不会感到震惊。在我的 >> infile 后有一条错误消息说没有匹配这些操作数的运算符,我不知道该怎么做。此外,我只是不知道从这里去哪里,或者如何修复我当前的代码。任何帮助表示赞赏。请耐心等待我,我是超级新手。

//Name
//This program will read and sort names and grades from a file using functions and vectors
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{
    ifstream infile;
    infile.open("student.txt");

    if (infile.fail() == false)
    {
        vector<string> name;
        vector<int> score;

        while (infile >> name)
        {
            infile >> score;
        }
    }
    else
    {
        cout << "Could not open the file." << endl;
    }
return 0;
}

所以我认为您没有意识到您需要将问题分解成更小的步骤。您(大概)知道如何从文件中读取单个值,并且(大概)知道如何将值添加到向量中。你似乎意识到你需要某种循环。您要做的就是将这些技术组合在一起,以达到您想要的整体效果。通常,当您这样做时,您需要引入 变量 来保存计算中的中间值。就是这种情况,我们将从文件中读取值到变量中,然后将这些变量中的值添加到向量中。

    vector<string> all_names;
    vector<int> all_scores;
    string name;
    int score;
    while (infile >> name >> score) // read one name and one score
    {
        all_names.push_back(name); // add that name to vector
        all_scores.push_back(score); // add that score to vector
    }

您在评论中得到的建议是,如果问题太复杂,您应该首先处理一个更简单的版本,这也是非常好的建议。许多初学者在接到一项大型或复杂的任务时会尝试一次解决所有问题。专业人士不会这样工作,初学者也不应该这样。