您的位置:首页 > 大数据 > 人工智能

ifstream fail()函数问题

2011-05-21 21:27 525 查看
今天写一个程序,其中有一部分是读取文件中的每一行,放入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置为真,因此出现了上面的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: