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

时间:2014-03-12 19:08:07

标签: c++ loops if-statement while-loop

用作输入的文件是包含以下内容的.txt文件:

Line 1
Line 2
Line 3
Line 4
Line 5

它正在我的代码的第3行打开。然而,while循环永远不会终止,不断打印" Pass"到控制台,为什么在第5行文本之后找不到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";
    }
}

2 个答案:

答案 0 :(得分:6)

因为你实际上从未实际消耗(读取)来自infile的任何东西来推进文件指针。代码只是不断检查EOF,但实际上并没有读取文件的任何内容。

答案 1 :(得分:1)

正如其他人所指出的那样,你不会做任何导致无限循环的infile。至于你如何做到这一点的问题,试试这个:

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