我对文件结束感到困惑

时间:2012-07-12 20:29:15

标签: c++

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

我使用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 个答案:

答案 0 :(得分:6)

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;
}

<小时/> 参考Reading from text file until EOF repeats last line