今天写一个程序,其中有一部分是读取文件中的每一行,放入vector<striing>中,我开始是这么写的
while
(getline(input, line)) {
strVec.push_back(line);
}
strVec.push_back(line);
}
在while后还加了一句:
if
(input.fail()) {
return 2 ;
}
return 2 ;
}
判断是不是读文件过程中有fail。如果只是读到流末尾,只是会input.eof()为真,但是调试时发现当执行到input.fail(),结果也为真。导致后面的代码都没有执行。
http://bytes.com/topic/c/answers/512483-ifstream-fail-vs-eof-question
这篇帖子解释了问题的原因,原因在于getline()函数在读到流末尾时,会将failbit置为真,因此出现了上面的问题。