while(getline(fileIn,line))
{
fileOut <<line<<endl;
}
while(getline(fileIn,line))
{
if(fileIn.eof())
break;
fileOut <<line<<endl;
}
我已尝试过这两段代码,第二段也读取了文件末尾并且没有中断。谁能告诉我为什么?
我只是从文件中读取并写出来。
答案 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)
第一个代码是正确的,它肯定会在文件中没有数据后结束循环。