0

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

我使用 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 时,它只会无休止地打印我给出的最后一个输入。

4

1 回答 1

6

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

查看您是否尝试读取文件结尾的正确方法是 this 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 重复最后一行

于 2012-07-12T20:30:48.137 回答