seekg前记得手动清除EOF标志位[通俗易懂]

seekg前记得手动清除EOF标志位[通俗易懂]问题因为具体任务,需要一个文件读取两遍。之前在第一次读取完毕后(此时EOF已经置位),直接调用is.seekg(0,is.beg);然后下次读取时直接退出了,即EOF标志位并没有被清除。查看C++标准库说明:C++98Iftheeofbitflagissetbeforethecall,thefunctionfails(setsfailbitandreturns).

大家好,又见面了,我是你们的朋友全栈君。

问题

因为具体任务,需要一个文件读取两遍。

之前在第一次读取完毕后(此时EOF已经置位),直接调用

is.seekg(0,is.beg) ;

然后下次读取时直接退出了,即EOF标志位并没有被清除。

查看C++标准库说明:

C++98
If the eofbit flag is set before the call, the function fails (sets failbit and returns).
C++11
The function clears the eofbit flag, if set before the call.

可以看到,按照标准库说法,C++98时如果EOF被置位,那么调用seekg会失败;但是在C++11中,上面说会首先清除EOF标志位。

然而,我测试 g++ 4.8.5, 指定-std=c++11 , 以及使用VS2015,发现seekg均失败。

照理说这些编译器应该都实现C++11标准了,然而这个问题依然如此。

这还是有些尴尬的。标准一回事、实现一回事,而且两个主要实现都不支持新标准…

不得不让我联想起空穴来风这个成语来了…

解决

一定seekg之前手动clear掉(EOF)标志位。

is.claer() ;
is.seekg(0 , is.beg) ;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144769.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据结构面试常见问题总结怎么写_前端数据结构与算法面试题

    数据结构面试常见问题总结怎么写_前端数据结构与算法面试题数据结构面试常见问题总结写在前面本文记录了一些数据结构面试常见问题,本意用于考研复试,以下面试题为网上整理的问题以及自己加入的一些问题,答案仅供参考!Q:数据结构三要素A:逻辑结构、物理结构、数据运算Q:数组与链表有什么区别?A:数组静态分配内存,链表动态分配内存数组在内存中连续,链表不连续数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n)数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)Q:线性表的存储结构?A:顺序存储(内

    2022年9月15日
    0
  • 郁闷!

    郁闷!

    2021年7月24日
    63
  • android 倒计时控件_安卓倒计时

    android 倒计时控件_安卓倒计时CountDownTimer构造函数:CountDownTimer(longmillisInFuture,longcountDownInterval)millisInfuture:要倒计时的总时间,单位ms。countDownInterval:要倒计时的间隔时间,单位ms。CountDownTimer是个抽象类,在实际运用中我们会去构造一个匿名实现类对象来进行处理…

    2022年9月17日
    0
  • System.setProperty用法

    System.setProperty用法setProperty(Stringprop,Stringvalue)—–设定健值对到系统内存中(操作系统变量的方法)。首先我们来了解一下参数:prop-系统属性的名称。value-系统属性的值正确的返回值情况:系统没有查到健值,返回null,查到的话返回value值。抛错情况:SecurityException-如果安全管理器存在并且其checkPermission方法不允许设置指定属性。NullPointerException-如果key或v.

    2022年7月12日
    56
  • ZJOI2007时态同步

    ZJOI2007时态同步

    2021年6月13日
    111
  • 数论题中(杜教筛)交换求和符号

    数论题中(杜教筛)交换求和符号文章目录方阵下三角约数倍数狄利克雷卷积以及杜教筛学习笔记突然对交换求和符号有了新的理解了,用矩阵转置的思路就很好理解,外层循环相当于枚举行,内层枚举列,交换次序就是先枚举列,再枚举行方阵正常的就是∑i=1n∑j=1nf(i,j)=∑j=1n∑i=1nf(i,j)\sum_{i=1}^n\sum_{j=1}^nf(i,j)=\sum_{j=1}^n\sum_{i=1}^nf(i,j)…

    2022年10月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号