Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
C++ 为什么跳过数据文件的第一行c++;_C++_Arrays_While Loop_Data Files - Fatal编程技术网

C++ 为什么跳过数据文件的第一行c++;

C++ 为什么跳过数据文件的第一行c++;,c++,arrays,while-loop,data-files,C++,Arrays,While Loop,Data Files,在为我的学校作业运行这个循环时,它似乎跳过了我从中提取的数据文件的第一行 这是数据文件 乔·约翰逊89 苏西·考德威尔67 马特贝克100 亚历克斯·安德森87 佩里·迪克森55 我得到的结果是: 考德威尔,苏西D 贝克,马特A 安德森,亚历克斯B 迪克森,佩里F 班级平均77.25 这是代码 #include <iostream> #include <string> #include <fstream> #include <

在为我的学校作业运行这个循环时,它似乎跳过了我从中提取的数据文件的第一行

这是数据文件
乔·约翰逊89 苏西·考德威尔67 马特贝克100 亚历克斯·安德森87 佩里·迪克森55

我得到的结果是:

考德威尔,苏西D 贝克,马特A 安德森,亚历克斯B 迪克森,佩里F 班级平均77.25

这是代码

   #include <iostream>
    #include <string>
    #include <fstream>
    #include <iomanip>

    using namespace std;







    int main()
    {
        // Variable declarations: 
        string fName[10];
        string lName[10];
        float grade_Average;
        string file;
        string name;
        int scores[10];
        float sum = 0;
        char grade;
        int i = 0;



        ifstream din;


        // Function body: 

        cout << "Enter the name of the file. " << endl;
        cin >> file;

        din.open(file.c_str());

        if (!din)
        {
            cout << " Cannot open the input file. Please try again." << endl;
            return 0;
        }

        cout << setw(10) << setfill(' ')  << "Name" <<setw(20)<<setfill(' ')<< "Grade" << endl;
        din >> fName[i];
        din >> lName[i];
        din >> scores[i];
        while (!din.eof())
        {

            i++;
            din >> fName[i];
            din >> lName[i];
            din >> scores[i];

            sum = sum + scores[i];


            switch (static_cast<int> (scores[i]/10))
            {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                grade = 'F';
                break;
            case 6:
                grade = 'D';
                break;
            case 7:
                grade = 'C';
                break;
            case 8:
                grade = 'B';
                break;
            case 9:
                grade = 'A';
                break;
            case 10:
                grade = 'A';
                break;
            default:
                cout << "Invalid score." << endl;



            }

            name = lName[i] + ',' + fName[i];
            cout << setw(10) << setfill(' ') << name  << setw(20) << setfill(' ')<<(" ") << grade << endl;


        } 
        grade_Average = sum / i;
        cout << "Class average " << grade_Average << endl;


        din.close();

        return 0;
    }
     // end function main
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
//变量声明:
字符串fName[10];
字符串lName[10];
浮动等级平均值;
字符串文件;
字符串名;
智力分数[10];
浮点数和=0;
煤焦品位;
int i=0;
伊夫丁;
//职能机构:
cout文件;
打开(file.c_str());
如果(!din)
{
cout>分数[i];
总和=总和+分数[i];
开关(静态施法(分数[i]/10))
{
案例0:
案例1:
案例2:
案例3:
案例4:
案例5:
等级=‘F’;
打破
案例6:
等级='D';
打破
案例7:
等级=‘C’;
打破
案例8:
等级=‘B’;
打破
案例9:
等级=‘A’;
打破
案例10:
等级=‘A’;
打破
违约:

cout第一行没有被跳过,但您从未打印出任何结果:

    din >> fName[i];
    din >> lName[i];
    din >> scores[i];
    while (!din.eof())
    {

        i++;
请注意,在上述代码的前三行中,您读入了
fName[0]
lName[0]
scores[0]
的值,但随后您增加了i(在while循环中),不再查看这些值


您最好删除这三行,并将
i++;
行移到while循环的末尾。

您在循环之前读取一次,然后再次读取循环中的第一件事,覆盖以前读取的任何值。这会产生丢弃第一行的效果-读取它,然后立即读取秒上面有一条线。