在开始之前,我必须首先说我已经研究过这个错误的可能解决方案.不幸的是,它们都与不使用数组有关,这是我的项目的要求.此外,我目前正在参加CS的介绍,所以我的经验几乎没有.
该数组的目的是从文件中收集名称.因此,为了初始化数组,我计算名称的数量并将其用作大小.问题是标题中陈述的错误,但我仍然没有看到它仍然使用一维数组的方法.
main.cpp中
#include#include #include #include #include #include "HomeworkGradeAnalysis.h" using namespace std; int main() { ifstream infile; ofstream outfile; infile.open("./InputFile_1.txt"); outfile.open("./OutputfileTest.txt"); if (!infile) { cout << "Error: could not open file" << endl; return 0; } string str; int numLines = 0; while (infile) { getline(infile, str); numLines = numLines + 1; } infile.close(); int numStudents = numLines - 1; int studentGrades[numStudents][maxgrades]; string studentID[numStudents]; infile.open("./InputFile_1.txt"); BuildArray(infile, studentGrades, numStudents, studentID); infile.close(); outfile.close(); return 0; }
HomeworkGradeAnalysis.cpp
using namespace std; void BuildArray(ifstream& infile, int studentGrades[][maxgrades], int& numStudents, string studentID[]) { string lastName, firstName; for (int i = 0; i < numStudents; i++) { infile >> lastName >> firstName; studentID[i] = lastName + " " + firstName; for (int j = 0; j < maxgrades; j++) infile >> studentGrades[i][j]; cout << studentID[i] << endl; } return; }
HomeworkGradeAnalysis.h
#ifndef HOMEWORKGRADEANALYSIS_H #define HOMEWORKGRADEANALYSIS_H const int maxgrades = 10; #includeusing namespace std; void BuildArray(ifstream&, int studentGrades[][maxgrades], int&, string studentID[]); void AnalyzeGrade(); void WriteOutput(); #endif
文本文件格式简单:
Boole, George 98 105 0 0 0 100 94 95 97 100
每条线都是这样的,学生人数不等.
在仍然使用数组的情况下,我仍然可以流式传输学生姓名的另一种方法是什么?