2011-01-22 31 views
0

爲了得到一個C++的ofstream的輸出指針的位置,我稱之爲的ostream :: tellp()返回一個對象的streampos。我想將這個值很大的值存儲到二進制文件中。獲得一個C的原始值++的ofstream我們把指針(存儲)

但是,我無法找到一種方式來獲得從該的streampos對象輸出指針的位置的原始值。如果我不擔心這個值很大,我會簡單地將它轉換爲一個整數;不過,我的文件大小可能只有幾千兆字節。有沒有人有任何想法?

謝謝!

回答

2

streampos爲某些(通常是無符號)整型一個typedef。儘管文件中的位置通常被稱爲「放置指針」,但實際上並沒有獲取指針值。

在最近的編譯器,streampos是要編譯爲本地64位整數(即unsigned long long,或unsigned __int64上MSVC++或uint64_t上GCC),這意味着你不應該有,只要你離開後顧之憂東西在streampos的價值。

+0

我的一個機器中的一個(在Mac)的sizeof(的streampos)= 136,但在另一個(Linux)的的sizeof(的streampos)= 16。顯然,16字節是不夠的,所以在Linux機器上streampos似乎是一個類。但是,我會嘗試將其轉換爲uint64_t,然後查看是否有效。謝謝! – samsamoa 2011-01-22 17:32:35