我要讀一個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()顯示位移后的位置。

喵喔喔
TA貢獻1735條經驗 獲得超5個贊
seekg函數是32位系統函數,文件位置用的是32位的int,只能處理小于4G的文件。
要處理超大文件,必須用支持64位的C++編譯器,并且使用_fseeki64這樣的64位函數。

呼啦一陣風
TA貢獻1802條經驗 獲得超6個贊
可能是從起始值,每次計算偏移量,讀取數據,這樣當偏移量超過int最大范圍時,會出問題。
可以試一下先偏移到你想要的位置,然后,每次從當前位置(ios::cur)偏移。
- 3 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消