请参阅当前位置的零重置eof标志
seekg zero from current position resets eof flag
根据GCC 4.6.2 istream.tcc
:
basic_istream<_CharT, _Traits>::
seekg(off_type __off, ios_base::seekdir __dir)
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR60. Do not change _M_gcount.
// Clear eofbit per N3168.
this->clear(this->rdstate() & ~ios_base::eofbit);
我不小心碰到了这个——不明白为什么我会得到一个无限的while (!eof)
循环。基本上,当使用ZERO长度调用seekg时,您仍然可以重置eof。即使对于零长度的std::ios_base_::cur
搜索,也有重置eof位的原因吗?这在VC10/11中不会发生。
N3168是什么?
问题是您滥用了eof()
:该标志的唯一用途是确定您上次读取是否因为触及文件末尾而失败(公平地说,它甚至没有这样做:即使设置了eof()
,也可能不是真正的原因,尽管它可能是)。要确定流状态,请使用到bool
:的转换
while (in) ...
请注意,您仍然需要在阅读后检查阅读是否成功。
N3168是标准化委员会讨论的一篇论文。我不知道它讨论了什么特定的话题,除了它是对一份全国性身体缺陷报告的回应。
相关文章:
- 如何将stdout重定向到stderr
- 当回溯以零开始时,如何调试崩溃
- 如何确定我已使用非编码文件到达 EOF?
- 在没有太多条件句的情况下,我如何避免被零除
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- 矩阵向量乘法(cublasDgemv)返回零
- QTableView:endMoveRows在模型中重置水平页眉大小
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 是否可以对零模板参数进行模板专门化
- 处理除以零会导致<csignal>意外行为
- 编写时C++中的输入重定向问题
- 如何将输入重定向与特殊整数作为分隔线和直至EOF
- 指向结构的指针保留某些属性,同时将其他属性重置为零(使用 map)
- 为什么这个正二重的腹肌等于零
- QProgressDialog栏在完成时重置为零
- 如何重置带有零的内置C++向量
- 请参阅当前位置的零重置eof标志
- 将 C int 数组重置为零:最快的方法
- 如果输入是 EOF,"std::cin >> value"是否返回零?
- 将向量(2D数组)的向量重置为零