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) ;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql tinytext_给学生提供什么类型的输入

    mysql tinytext_给学生提供什么类型的输入除了CHAR和VARCHAR字符类型时,MySQL为我们提供了TEXT具有更多的功能,其类型CHAR和VARCHAR不能覆盖。的TEXT是用于存储可以采取从1个字节到4GB长格式文本字符串是有用的。我们经常会TEXT在新闻站点中找到用于存储文章正文的数据类型,在电子商务站点中会找到产品描述的数据类型。与CHAR和不同VARCHAR,在TEXT为列使用类型时不必指定存储长度。另外,在检索或插入文本数据(如CHAR和)时,MySQL不会删除或填充空格VARCHAR。请注意,TEXT数据未存储在数据库服

  • ForkJoin之RecursiveAction和RecursiveTask的简单使用

    ForkJoin之RecursiveAction和RecursiveTask的简单使用ForkJoin之RecursiveAction和RecursiveTask的简单使用Java提供的多线程可以提高CPU的利用率,现在的CPU都是多核多线程,如果不好好利用,只运行单线程程序,会使得CPU的其他核心空闲,浪费宝贵的计算机资源。编写好的程序不容易,编写好的多线程程序更难。JDK1.7开始,Java提供了Fork/Join框架,可以方便的将一个大任务拆分成多个小任务,利用多个线程…

  • JVM原理最全、清晰、通俗讲解,五天40小时吐血整理

    JVM原理最全、清晰、通俗讲解,五天40小时吐血整理JVM原理最全、清晰、通俗讲解,五天40小时吐血整理

  • tess4j验证码识别

    tess4j验证码识别tess4j的安装和使用参考:https://www.cnblogs.com/cmyxn/p/6993422.htmltess4j提高识别率1.对称近邻均值滤波参考:http://blog.csdn.net/fangbinwei93/article/details/505624492.指定config为digits,并修改tessdata\configs\digits文件,将白名单中设置…

  • SpringBoot——整合Shiro完成登录检验

    SpringBoot——整合Shiro完成登录检验SpringBoot——整合Shiro完成登录检验

发表回复

您的电子邮箱地址不会被公开。

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