【问题标题】:Why is this a never-ending loop?为什么这是一个永无止境的循环?
【发布时间】:2014-04-17 04:11:45
【问题描述】:

用作输入的文件是一个 .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";
    }
}

【问题讨论】:

  • 即使您会阅读某些内容,检查eofbad 也不是阅读ifstream 的正确方法。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 如何更改我的代码以使用文件中的数据?
    • 感谢您的帮助!绝对是将来要记住的事情。
    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多