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)
blank

相关推荐

  • ubuntu安装vscode的两种方法

    ubuntu安装vscode的两种方法方法一:依次输入如下命令1、sudoadd-apt-repositoryppa:ubuntu-desktop/ubuntu-make2、sudoapt-getupdate3、sudoapt-getinstallubuntu-make4、umakeidevisual-studio-code提示输入a即可方法二:在windows系统下载安装包,再使用共享文件夹…

  • SSM-Mybatis(2)

    SSM-Mybatis(2)日志如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的助手曾经:sout,debug现在:日志工厂掌握STDOUT_LOGGINGLOG4Jlog4j什么是Log4j?我们可以控制日志信息输送的目的地是控制台我们也可以控制每一条日志的输出格式通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。分页减少数据量selsect * from user limit startIndex,pageS

  • hybrid app开发教程_公司员工大会历程分享

    hybrid app开发教程_公司员工大会历程分享关于这个话题,本文并不准备详述移动开发相关的一些通用技术,例如:viewport、rem、flexbox、媒体查询等。这里主要讲述我们的hybrid产品策略、开发流程与规范、性能优化以及我们踩过的坑。而往往就是这些,网上相关的资料相对比较匮乏的,又缺少类似经验文章,所以希望通过此篇文章,跟大家分享一些魅族团队关于hybrid产品开发的经验。产品背景我们希望这一类产品具备比较强大的

  • html中怎么让表格居中_html表格上下居中

    html中怎么让表格居中_html表格上下居中回答:IE6/7及IE8混杂模式中,text-align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。解决这个问题比较好的方式,就是为所有需要相对父容器居中对齐的块级元素设置“margin-left:Auto;margin-right:Auto”。但这个方式IE6/IE7/IE8的混杂模式中不支持,所以还要设置父容器的”text…

  • task scheduler启动不了_Task Scheduler

    task scheduler启动不了_Task Scheduler理解ITaskService对象此对象需要依赖TaskshdWindows服务,如果此服务被关闭,那么此COM对象也将会失效。

  • 本工作站与主域失去信任_电脑域改为工作组后无法登录

    本工作站与主域失去信任_电脑域改为工作组后无法登录Windows7系统在WindowsServer2003中的加域问题,加域时提示:此工作站和主域间的信任关系失败。故障原因:故障原因:这个问题是由于登陆windowsserver2003的域控制器(DC)的网络服务是服务器无法辨识其DS_WEB_SERVICE_REQUIRED值引起的。简单点儿来说,就是服务器不认windows7.了解计算机七层协议的人都知…

    2022年10月18日

发表回复

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

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