【发布时间】:2011-05-18 11:44:17
【问题描述】:
可能重复:
Why is iostream::eof inside a loop condition considered wrong?
我有以下代码:
ifstream f("x.txt");
string line;
while (f.good()) {
getline(f, line);
// Use line here.
}
但这会读取最后一行两次。为什么会发生这种情况,我该如何解决?
发生了非常相似的事情:
ifstream f("x.txt");
string line;
while (!f.eof()) {
getline(f, line);
// Use line here.
}
【问题讨论】:
-
这是怎么复制的?另一个答案甚至没有提到使用 good() 函数作为测试进行循环。
-
@JerryJeremiah 尝试检查当前流状态(例如
.good(),.eof(),.fail())以预测未来读取操作的成功(例如@987654327)是相同的一般问题@,>>)。这不起作用,因为流状态会告诉您先前的读取操作是否失败/到达输入的末尾;它不会告诉您有关未来读取尝试的任何信息。