问题描述
我正在尝试将.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 ++数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!