ifstream seekg 问题

ifstream seekg 问题文件输入流(ifstream)读到文件尾之后,调用seekg重定向读pos类似于以下代码片段://readwholefilewhile(ifs.readline(str,strLen)){std::cout<<line++<<":"<<str<<std::endl;}ifs.seekg(0,std:…

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

文件输入流(ifstream)读到文件尾之后,调用seekg 重定向 读pos

类似于以下代码片段:

//read whole file
while(ifs.readline(str,strLen)){
    std::cout << line++ << " : "<<str<<std::endl;
}



ifs.seekg(0,std::ios::beg);//rewind to beginning of the file //1
ifs.clear();//clear eof flag                                 //2

std::cout <<"+++++++++++++++++++++++++++++++"<<std::endl;
//read whole file again
line = 0;
while(ifs.readline(str,strLen)){//发生错误,不能继续读文件
    std::cout << line++ << " : "<<str<<std::endl;
}

 

发现重新读文件的时候 发生错误,不能继续读文件。

查看seekg的说明之后,发现

ifstream seekg 问题

如果 ifstream 的 eofbit 没有被清除,seekg 会失败。

 

改成如下代码之后,程序正常了。

 

//read whole file
while(ifs.readline(str,strLen)){
    std::cout << line++ << " : "<<str<<std::endl;
}


ifs.clear();//clear eof flag first                                //2
ifs.seekg(0,std::ios::beg);//then rewind to beginning of the file //1


std::cout <<"+++++++++++++++++++++++++++++++"<<std::endl;
//read whole file again
line = 0;
while(ifs.readline(str,strLen)){//发生错误,不能继续读文件
    std::cout << line++ << " : "<<str<<std::endl;
}

 

 

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

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

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

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

(0)


相关推荐

  • 硬盘恢复分区_windows恢复分区

    硬盘恢复分区_windows恢复分区配置RedFlagLinux4.0分区(转)  对很多用户来讲,安装Linux系统最麻烦的就是创建Linux分区了!在下文中,笔者将告诉安装程序要在哪里安装系统,即为将要安装RedFlagLinuxDes…

  • clion 2021 激活_在线激活

    (clion 2021 激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

  • 面试java工程师的自我介绍_软件开发和程序员一样吗

    面试java工程师的自我介绍_软件开发和程序员一样吗程序员面试时一段短短的自我介绍,其实是为了揭开更深入的面谈而设计的。下面学习啦小编为你带来java程序员面试自我介绍范文的内容,希望你们喜欢。关于java程序员面试自我介绍范文篇一本人叫小冰,今年22岁,现在是吉林大学软件开发与信息管理专业方向的三年级学生,对软件开发怀有浓烈的兴趣,且对JAVA语言尤其熟悉,能熟练使用jsp、struts、struts2、sring2和hibernate3等流行的…

    2022年10月29日
  • zencart模板分析

    zencart模板分析ZenCart的模板设计说简单其实也挺简单的说复杂也比较复杂,需要一定的时间来熟悉。一旦你了解了它的结构,就会慢慢习惯了。首先要阅读常见问答部分的:如何添加、制作新模板。ZenCart的设计没有什么特别,与以前设计HTML页面是一样的。只是整个页面分成了好几个部分,并加入了php代码。(设计Zencart模板制作需要理解PHP和CSS样式定义)通常,页面分为页眉(header),页

  • 程序员需要什么条件_大厂程序员啥意思

    程序员需要什么条件_大厂程序员啥意思从参加工作到现在,短短的几年内,我投资在自己身上的钱已超过三十多万,光买书籍的钱就已超过总投资的三分之一,买了不少于上千本书,有实体书,也有电子书。这些书不仅提升了我的技术能力,更提升了我的视野和认知。

  • 蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」

    蓝牙键盘鼠标连接手提电脑无响应/罗技K380/雷柏鼠标「建议收藏」最近买了罗技的K380蓝牙键盘,支持连接三种设备,可以通过按键切换。另外也入手了雷柏的一款鼠标,同样也是支持三种设备切换。今天拿到办公室,连接手提的时候,第一次连接显示匹配错误,然后再搜索一直搜索不到了。经过排查以后,发现是蓝牙设备已经配对,但是没有连接成功,在蓝牙选项里的已配对设备里,把设备删除,重新搜索连接就可以了!转载于:https://www.cnblogs.com/miketian/…

发表回复

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

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