相关疑难解决方法(0)

为什么循环条件中的iostream :: eof被认为是错误的?

我刚刚在这个答案中发现了一条评论说iostream::eof在循环条件下使用"几乎肯定是错误的".我通常使用类似的东西while(cin>>n)- 我猜是隐式检查EOF,为什么检查eof显式使用while (!cin.eof())错误?

它与scanf("...",...)!=EOF在C中使用有何不同(我经常使用没有问题)?

c++ iostream c++-faq

564
推荐指数
5
解决办法
6万
查看次数

测试stream.good()或!stream.eof()读取最后一行两次

可能重复:
为什么循环条件中的iostream :: eof被认为是错误的?

我有以下代码:

ifstream f("x.txt");
string line;
while (f.good()) {
  getline(f, line);
  // Use line here.
}
Run Code Online (Sandbox Code Playgroud)

但这会两次读到最后一行.为什么会发生这种情况,我该如何解决?

与以下情况非常相似:

ifstream f("x.txt");
string line;
while (!f.eof()) {
  getline(f, line);
  // Use line here.
}
Run Code Online (Sandbox Code Playgroud)

c++ iostream

17
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×2

iostream ×2

c++-faq ×1