我有一个文本文件,其格式如下:
U123 78 90 65 85
U234 87 98 90 56
U345 89 90 98 87
U456 45 56 67 78
第一个值(Uxxx)是"学生编号"并且同一行上的每个其他值都是测试分数(第一个是考试1,第二个考试2等)
我正在尝试获取特定学生(由用户指定)的所有考试的平均值,但是在如何存储特定行的考试值时遇到问题。
我有一个不同的功能,显示指定学生的分数,我试图修改它也适用于此,但我遇到了麻烦。以下是该功能的代码:
void DisplayStudentScores()
{
string stuNum;
ifstream inFile;
inFile.open(scores.txt);
//for testing purposes
if(!inFile) {
cout << "File not found" << endl;
exit(1);
}
//end of test
cout << "Enter the Student ID of who's scores you would like to see: ";
cin >> stuNum;
cout << endl;
string line;
while(getline(inFile, line)){
if(line.find(stuNum) != string::npos){
cout << line << endl;
break;
}
else{
cout << "Student not found" << endl;
break;
}
}
}
答案 0 :(得分:0)
字段整齐地用空格分隔,因此流操作符比getline
更好:
string stu;
int score1, score2, score3, score4;
infile >> stu >> score1 >> score2 >> score3 >> score4;
你可以把它放在循环中:
while(infile >> stu >> score1 >> score2 >> score3 >> score4){
if(stu == stuNum){
// calculate and print average
return;
}
}
cout << "Student " << stuNum << " not found" << endl;