我对文件结尾感到困惑

I am confused about End of File

本文关键字:结尾 文件      更新时间:2023-10-16

我真的对文件结尾感到困惑。假设我正在运行一个无限循环。在这个循环中,我将一个整数作为输入,然后对其进行处理,直到找到文件结尾。但是我要检查输入是否为文件结尾。我该如何打破这个循环?

我使用Windows,所以对于EOF,我键入CTRL+Z。

#include<iostream>
#include<cstdio>
using namespace std;
int main(void)
{
  int n;
  while(true)
  {
    cin >> n;
    if(n==EOF)break;
    cout << n << endl;
  }
  return 0;
}

当我运行这段代码并键入CTRL+z时,它只会无休止地打印我给出的最后一个输入。

1)这不是检查文件结尾的方法。您在哪里读到operator>>将返回EOF值?

查看您是否已尝试读取文件末尾的正确方法是此if(cin.eof())。但是,永远不要这样做,因为:

2) 你永远不应该检查文件的末尾。相反,您应该检查"最后一次输入操作是否正确?"

像这样:

#include<iostream>
#include<cstdio>
using namespace std;
int main(void)
{
  int n;
  while(cin >> n)
  {
    cout << n << endl;
  }
  return 0;
}


参考:从文本文件读取直到EOF重复最后一行