我对文件结束感到困惑

edd*_*ark 0 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*obᵩ 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;
}
Run Code Online (Sandbox Code Playgroud)


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

  • 不要忘记提供任何帮助您的答案,并接受解决您问题的单一答案. (2认同)