为什么有一行空白

  • 本文关键字:一行 空白 c++
  • 更新时间 :
  • 英文 :


我有以下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是你额外的空白行。

最新更新