C++ ofstreamの出力ポインタの位置を取得するために、streamposオブジェクトを返すostream :: tellp()を呼び出します。私はバイナリファイルにこの値(かなり大きいかもしれません)を保存したいと思います。C++ forstreamのputポインタの生の値の取得(ストレージ用)
しかし、このstreamposオブジェクトから出力ポインタの位置の生の値を取得する方法が見つかりません。この値が非常に大きいと心配しなければ、単純に整数に変換します。しかし、私のファイルサイズは数ギガバイトかもしれません。誰にもこれについてのアイデアはありますか?
ありがとうございます!
私のマシン(Mac)の1つはsizeof(streampos)= 136ですが、別の(Linux)sizeof(streampos)= 16です。明らかに16バイトでは十分ではないので、Linuxマシンではstreamposがクラスであるようです。しかし、私はそれをuint64_tに変換して、それがうまくいくかどうかを調べるつもりです。ありがとうございました! – samsamoa
16バイトは64ビットです。ファイル2 [EiB](http://en.wikipedia.org/wiki/EiB)のサイズには十分です。たとえそれを保持できるデバイスが今日でも利用可能であったとしても、ほとんどのオペレーティングシステムは64ビットの整数を使ってファイルサイズを表現するため、大きなファイルを作成することはできませんでした。どのように入手したか分かりませんsizeof(streampos)= 136 - それが可能なアーキテクチャは認識していません。 –
お世話になりました!それは今意味がある - 私は偶然16ビットを考えていた。私のMac(10.6.6、Intel Core 2 Duo)では、私は単にiostreamを含めて "cout << sizeof(streampos)<< endl;"それは136を印刷しました。非常に奇妙です! – samsamoa