为什么这是一个永无止境的循环

Why is this a never-ending loop?

本文关键字:一个 永无止境 循环 为什么      更新时间:2023-10-16

用作输入的文件是一个.txt文件,其中包含:

Line 1
Line 2
Line 3
Line 4
Line 5

,它正在我的代码的第三行上打开。然而,while循环永远不会终止,不断地打印"传递"到控制台,所以为什么在文本的第五行之后不找到 infile.eof()

int main(int argc, char** argv) {
    ifstream infile;
    infile.open("TEST.txt", ios::in);

    if(infile.is_open()){
        while(!infile.eof()){
            cout << "Pass" << 'n';
        }
    }
    else{
        cout <<"Fail";
    }
}

,因为您从未真正消耗(读)从ifile中使用任何东西来推进文件指针。该代码只是不断检查EOF,但实际上并未读取文件的任何内容。

正如其他人指出的那样,您不会做任何会导致无限环路的任何事情。至于您如何正确执行此操作的问题,请尝试以下操作:

int main()
   {
      ifstream infile("TEST.txt", ios::in);
      string input;
      while(infile)
      {
          getline(infile, input);
          <do something with "input">
      }
      return 0;
   }