为了账号安全,请及时绑定邮箱和手机立即绑定

为什么读出来的都是05h,请问该怎么办?

为什么读出来的都是05h,请问该怎么办?

C++
桃花长相依 2023-03-18 14:10:42
我要读一个10g以上的单个二进制文件 但是seekg一旦超过一个值 会出现一个问题。读出一个数据 比如05h 那么再次调用seekg 不管偏移量为多少 读出来的都是05h 怎么办
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

C++,seekg用在读取文件的时候,seekg(offset,dir),offset是一个位移值,为Long型,=0是当前,>0向后移,<0则向前移。dir有3个参数,ios::beg文件开头,ios::end文件结尾,ios::cur当前指针位置.你读取文件后,注意读的时候是ios::in,写是ios::out你在用seekg(10L,beg),表示文件开头向后移10个字节,在用cout<<tellg()显示位移后的位置。

查看完整回答
反对 回复 2023-03-21
?
喵喔喔

TA贡献1735条经验 获得超5个赞

seekg函数是32位系统函数,文件位置用的是32位的int,只能处理小于4G的文件。
要处理超大文件,必须用支持64位的C++编译器,并且使用_fseeki64这样的64位函数。

查看完整回答
反对 回复 2023-03-21
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

可能是从起始值,每次计算偏移量,读取数据,这样当偏移量超过int最大范围时,会出问题。
可以试一下先偏移到你想要的位置,然后,每次从当前位置(ios::cur)偏移。

查看完整回答
反对 回复 2023-03-21
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信