从文件中读取并存储到数组C++中



我需要编写一个从文件中读取并将值存储到并行数组中的函数。在文本文件中我有一个名字,在下一行我有一组4分。关于如何实现这一点的任何提示。这是一个文本文件的例子

joe
30 75 90 88
ben 
100 75 93 20

这是我到目前为止的代码

ifstream input;
int main()
 {
string nameArray[];
double grades[];
void nameGrade(string[], double[]);
input.open("scores.txt");
nameGrade(nameArray, grades);
for (int i = 0; i <4; i++)
{
    cout << "student name: " << nameArray[i] << " Student Grades: " << grades[i] << endl;
}
input.close();
return 0;
}
void nameGrade(string name[], double grade[])
{
    for (int i = 0; i < 5; i++)
    {
        getline(input,studentName[i]);
        input >> studentGrade[i];
    }
}

由于每个记录只有一个名称,并且每个记录有多个等级,因此将名称的读取移动到for循环之前:

void nameGrade(string& name,
               double grade[])
{
    getline(input,name);
    for (int i = 0; i < 5; i++)
    {
        input >> studentGrade[student_index * 5 + i];
    }
}

你的设计很复杂。每个学生都有多个年级。因此,为了处理这种关系,你需要一个二维的学生阵列或一个结构阵列:

struct Student_Name_Grades
{
  std::string name;
  std::vector<double> grades; // substitute array here if necessary.
};
std::vector<Student_Name_Grades> student_info;
// Or:  Student_Name_Grades student_info[MAXIMUM_STUDENTS];

另一种选择是有5倍于学生的年级名额。因此,要访问学生#2的成绩:

const unsigned int GRADES_PER_STUDENT = 5;
unsigned int student_index = 2;
double grade_1 = grades[student_index * GRADES_PER_STUDENT + 0];
double grade_2 = grades[student_index * GRADES_PER_STUDENT + 1];
double grade_3 = grades[student_index * GRADES_PER_STUDENT + 2];
double grade_4 = grades[student_index * GRADES_PER_STUDENT + 3];
double grade_5 = grades[student_index * GRADES_PER_STUDENT + 4];

相关内容

  • 没有找到相关文章

最新更新