【发布时间】:2018-10-18 10:43:54
【问题描述】:
我的代码无法读取所有行的数据。
void read(string name, student *sv, int n) {
ifstream file (name, ios::in);
string name, sex;
int dy, mth, year, i = 0;
float a, b;
while (file >> name >> dy >> mth >> year >> sex >> a >> b) {
cout << name << dy << mth << year << sex << a << b << endl;
sv[i].name = name;
sv[i].date.day = dy;
sv[i].date.month = mth;
sv[i].date.year = name;
sv[i].sex = sex;
sv[i].math = a;
sv[i].physics = b;
++i;
}
file.close();
我的数据:
Johns 3 6 1999 Male 5 7
Jeam 3 7 1998 Male 8 7
Jes 7 9 1999 Male 5 9
当我调试此代码时,它无法读取最后一行( Jes 7 9 1999 Male 5 9 )。所以 struct sv 没有最后一个值。
【问题讨论】:
-
您的输入文件的最后一行是否有换行符(\n 或 \r\n)?
-
这本质上应该可以正常工作。我不知道变量“nam”从何而来,也不知道 d.close() 在做什么。我也强烈反对隐藏变量名,但是如果你的 *sv 指向一个适当大小的数组,那么循环本质上应该可以工作。
-
最后一行没有换行符,只有“endl”其他行。谢谢 Oncaphiilis。但是,我的代码被编辑了。如何使用 while ( filename >> variable ){ } 语法读取最后一行。