循环中的文件输入 我被要求从.txt文件和C++程序中获取文本和数字。 我不知道的是我将整理他们成绩的学生人数,所以我使用了一个while循环,条件是!fin.eof 代码:
它无限循环。我确保.txt文件是正确的循环中的文件输入 我被要求从.txt文件和C++程序中获取文本和数字。 我不知道的是我将整理他们成绩的学生人数,所以我使用了一个while循环,条件是!fin.eof 代码:,c++,file,loops,input,fstream,C++,File,Loops,Input,Fstream,它无限循环。我确保.txt文件是正确的 我的代码怎么了?问题在于getline函数不稳定,无法在循环中使用。 谢谢大家。开始阅读。我预测其中一个输入操作失败,并使流处于失败状态fin.fail==true。在此之后,所有后续操作都会立即失败,并且您没有取得任何进展。调试器告诉您了什么?@πάνταῥεῖ 没有出现错误,但程序在之后继续循环running@user2834298那不是我的问题。当您使用调试器逐行遍历程序时,您注意到了什么? #include <iostream> #in
我的代码怎么了?问题在于getline函数不稳定,无法在循环中使用。
谢谢大家。开始阅读。我预测其中一个输入操作失败,并使流处于失败状态fin.fail==true。在此之后,所有后续操作都会立即失败,并且您没有取得任何进展。调试器告诉您了什么?@πάνταῥεῖ 没有出现错误,但程序在之后继续循环running@user2834298那不是我的问题。当您使用调试器逐行遍历程序时,您注意到了什么?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream fin;
fin.open("grades.txt");
cout << "Name\t\t\t" << "Midterm\t" << "HMAvg\t" << "Final\t" << "Average\t" << "Grade" << endl;
while(!fin.eof())
{
string name;
double mdtrm, final, hw, shw=0, ahw=0, avg;
char grade;
getline(fin, name);
fin >> mdtrm;
fin >> final;
for(int i=0; i<5; i++)
{
fin >> hw;
shw = shw+hw;
}
ahw = shw/5;
avg = ((mdtrm*0.3)+(final*0.4)+(ahw*0.3));
if(avg>=90 && avg<=100)
grade = 'A';
else if(avg>=80 && avg<90)
grade = 'B';
else if(avg>=70 && avg<80)
grade = 'C';
else
grade = 'F';
cout << name << "\t" << mdtrm << "\t" << ahw << "\t" << final << "\t" << avg << "\t" << grade << endl;
}
fin.close();
system("pause");
return 0;
}