ifstream fail()函数问题

今天写一个程序,其中有一部分是读取文件中的每一行,放入vector<striing>中,我开始是这么写的

  
    
while (getline(input, line)) {
strVec.push_back(line);
}

在while后还加了一句:

  
    
if (input.fail()) {
return 2 ;
}

判断是不是读文件过程中有fail。如果只是读到流末尾,只是会input.eof()为真,但是调试时发现当执行到input.fail(),结果也为真。导致后面的代码都没有执行。

http://bytes.com/topic/c/answers/512483-ifstream-fail-vs-eof-question

这篇帖子解释了问题的原因,原因在于getline()函数在读到流末尾时,会将failbit置为真,因此出现了上面的问题。

你可能感兴趣的:(Stream)