Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环中的文件输入 我被要求从.txt文件和C++程序中获取文本和数字。 我不知道的是我将整理他们成绩的学生人数,所以我使用了一个while循环,条件是!fin.eof 代码:_C++_File_Loops_Input_Fstream - Fatal编程技术网

循环中的文件输入 我被要求从.txt文件和C++程序中获取文本和数字。 我不知道的是我将整理他们成绩的学生人数,所以我使用了一个while循环,条件是!fin.eof 代码:

循环中的文件输入 我被要求从.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

它无限循环。我确保.txt文件是正确的
我的代码怎么了?

问题在于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;
}