【发布时间】:2019-06-29 10:34:55
【问题描述】:
我有一个函数可以像这样在循环中从具有固定格式的文件中读取:
istream.seekg(0, std::ios::begin);
while (istream >> x >> y) {
// do something
}
正如我所发现的,并且在循环退出后这里有很好的记录,eofbit 和 failbit 都已设置。我希望能够在下次调用该函数时再次重新读取该文件,而无需关闭并重新打开ifstream,因此要使其正常工作,我必须先添加一个istream.clear()。我觉得奇怪的是,自从 c++11 以来,seekg() 的记录行为表明它将清除eofbit,但它对failbit 没有任何作用,这使得seekg() 的这一方面对我来说似乎毫无用处.无论如何,以任何方式调用clear() 是否存在问题,例如隐藏任何潜在的错误条件等?
【问题讨论】:
标签: c++ c++11 fstream iostream