我有以下C++程序:
ofstream output("scores.txt");
output<<"John"<<" "<<"T"<<" "<<"Smith"<<" "<<90<<endl;
output<<"Eric"<<" "<<"K"<<" "<<"Jones"<<" "<<103<<endl;
output.close();
ifstream input;
input.open("scores.txt");
string line;
while (!input.eof()) {
getline(input, line);
cout<<line<<endl;
}
input.close();
cout<<"Done";
输出为:
John T Smith 90
Eric K Jones 103
Done
为什么Eric K Jones 103和Done之间有一行空白?
这样构建循环:
while (getline(input, line)) {
cout<<line<<endl;
}
重复的行是因为读取循环的结构方式,一旦读取最后一行,eof
位尚未设置,因为readline
成功。因此,你再迭代一次,做一个readline
,做设置eof
位,然后做cout<<line<<endl
,最后的endl
是你额外的空白行。