【发布时间】:2020-04-30 04:56:43
【问题描述】:
我的提示问: 在这个程序中,我们将从一个名为的文件中输入 100 名学生的姓名和分数 学生.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;
}
【问题讨论】:
-
你希望
infile >> name做什么? -
另外,在尝试将数据读入两个向量之前,请专注于将数据读入 一个 向量。简化您的作业并使用仅包含名称的文件。一旦你完成了这么多工作,你就可以扩展你的程序来处理分数。
-
这里有更多关于简化问题的内容,正如@JaMit 明智地建议的那样:ericlippert.com/2014/03/21/find-a-simpler-problem 实际上我建议进一步简化,首先读入一个字符串。然后查看如何将单个字符串存储到向量中。
-
@JaMiT 我通过遵循我的教授提供的一个较旧的程序写道,但是,它是在不同的上下文中。我希望它会读取第一个值并将其存储在 name 下,然后在 while 循环下移动到第二个值并将其存储在 score 下,然后重复。我要试试你说的简化问题
-
您必须使用两个向量变量,一个用于存储学生姓名,另一个用于存储学生分数。 很高兴看到允许使用
vector的作业,但在现实世界中,您需要一个聚合名称和分数的结构的vector。它大大减少了所需的簿记量。
标签: c++ file vector operators fstream