本文介绍了将文件读入struct C ++数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将.txt文件读入此程序的结构数组中并显示内容.
该文件如下所示:

I am trying to read a .txt file into an array of struct in this program and display the content.
The file looks like this:

Smith   Jack    60    45    98
Harry   Hisk    45    40    78
Kay     Jacob   35.5  23    45
Dos      hed    23    20    35
Noa      Tom    55    12    32
Joe      Peni   57    49    78
Vin      San    25.6  23    65.5
Jes      Dan    24.3  12    78
Zi       Lee    56    49    99
Angi     Dev    57    48    97
Donald   David  60    50    96
Davis    Lal    47    47    80
Alvis   Sen     56    46    85
Jack    Jill    45    45    75
Messy   Lionel  60    49    100

我正在运行的代码:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
    const int SIZE=50;
    int i;
    struct Records {
        string firstname;
        string secondname;
        float test1mark;
        float midtestmark;
        float annualmark;
    }record[SIZE];

    ifstream in("Data.txt");

    if (!in){
    cerr << "File can't be opened! " << endl;
    system("PAUSE");
    exit(1);
    }
    for (int i=0; i < SIZE; i++){
    in >> record[i].firstname >> record[i].secondname
    >>record[i].test1mark >> record[i].midtestmark >> record[i].annualmark ;
    }
    for (int i=0;i< SIZE;i++) {
        cout << record[i].firstname<<"  ";
        cout << record[i].secondname<<" ";
        cout << record[i].test1mark<<"  ";
        cout << record[i].midtestmark << "  ";
        cout << record[i].annualmark << "   ";
    }
return 0;
}

我得到的输出:

Smith   Jack    60      45      98
Harry   Hisk    45      40      78
Kay     Jacob   35.5    23      45
Dos     hed     23      20      35
Noa     Tom     55      12      32
Joe     Peni    57      49      78
Vin     San     25.6    23      65.5
Jes     Dan     24.3    12      78
Zi      Lee     56      49      99
Angi    Dev     57      48      97
Donald  David   60      50      96
Davis   Lal     47      47      80
Alvis   Sen     56      46      85
Jack    Jill    45      45      75
Messy   Lionel  60      49      100
                nan     0       8.94237e-039
                4.36192e-039    0       -2.3511e-038
                0       0       -2.3511e-038
                0       0       0
                1.32253e-038    0       1.32251e-038
                4.2039e-045     0       -2.11122e+037
                1.32251e-038    0       3.21276e-039
                1.4013e-045     0       -2.3511e-038
                1.4013e-045     0       3.76158e-037
                0       0       3.76158e-037
                0       0       1.12104e-044
                4.36195e-039    0       4.36194e-039
                3.57331e-043    0       6.0615e-039
                0       0       3.21276e-039
                4.2039e-045     0       6.41272e-039
                1.12104e-044    0       6.63812e-039
                4.36205e-039    0       -2.75237e+038
                0       0       6.59812e-039
                6.63426e-039    0       1.4013e-045
                0       0       6.47961e-039
                3.21319e-039    0       3.21319e-039
                6.59812e-039    0       3.21299e-039
                8.40779e-045    2.24208e-044    6.01433e-039
                6.6045e-039     0       2.54408e-029
                0       0       6.6045e-039
                0       0       6.43946e-039
                5.88656e-039    0       -4.12495e+011
                0       0       0
                5.88656e-039    0       2.54408e-029
                nan     nan     6.43029e-039
                0       0       0
                5.93823e-039    0       -4.12495e+011
                0       0       0
                5.93823e-039    0       5.74532e-044
                nan     nan     5.93837e-039


0.05447秒后进程退出,返回值为0
按任意键继续 ...


Process exited after 0.05447 seconds with return value 0
Press any key to continue . . .

有人可以告诉我这是怎么回事吗?我尝试使用指针,但情况变得更糟.-初学者

Can someone tell me what's wrong with it? I've tried using pointers but it just got worse. -Beginner

推荐答案

您的文件有 15 行,因此您只能读取15行数据.您正在使用变量 SIZE 控制应读取的行数.

Your file has 15 lines, and so you can only read through 15 lines of data. You are using the variable SIZE to control how many lines should be read.

问题是 SIZE 50 !不是不是 15 .当您尝试读取文件末尾时,输入 not 不会被读取到第16 行.因此,索引 15 之后的变量将未初始化,即 undefined .

The problem is that SIZE is 50! It is not 15. When you are trying to read past the end of file, the input will not be read past the 16 line. So, the variables after index 15 will be uninitialized, which is undefined.

或者将文件中的行数增加到 50 ,或者将 SIZE 更改为 15 .

Either increase the amount of lines in your file to 50, or change SIZE to be 15.

这篇关于将文件读入struct C ++数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 10:10
查看更多