使用getline时如何检测文件结尾?

时间:2010-03-12 01:04:40

标签: c++

while(getline(fileIn,line))
{

  fileOut <<line<<endl;

}


while(getline(fileIn,line))
{

  if(fileIn.eof())
   break;
  fileOut <<line<<endl;

}

我已尝试过这两段代码,第二段也读取了文件末尾并且没有中断。谁能告诉我为什么?

我只是从文件中读取并写出来。

3 个答案:

答案 0 :(得分:4)

getline函数返回对您正在阅读的流的引用。如果您尝试阅读过去 EOF,则评估为false。当您读取文件的最后一行时,流仍处于良好状态。因此,您永远不会在第二段代码中达到if-test。

答案 1 :(得分:0)

这是“fileIn”和“eof()”之间的逗号??? (第二个例子)

我喜欢做的一件事是在我的fstream上启用exceptions。 YMMV:

ifstream file;
file.exceptions(ifstream::eofbit | ifstream::failbit | ifstream::badbit);

答案 2 :(得分:0)

第一个代码是正确的,它肯定会在文件中没有数据后结束循环。

相关问题