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

我要读一个10g以上的单个二进制文件 但是seekg一旦超过一个值 会出现一个问题。读出一个数据 比如05h 那么再次调用seekg 不管偏移量为多少 读出来的都是05h 怎么办

桃花长相依
浏览 102回答 3
3回答

胡子哥哥

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()显示位移后的位置。

喵喔喔

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

呼啦一阵风

可能是从起始值,每次计算偏移量,读取数据,这样当偏移量超过int最大范围时,会出问题。可以试一下先偏移到你想要的位置,然后,每次从当前位置(ios::cur)偏移。
打开App,查看更多内容
随时随地看视频慕课网APP