私のプロジェクトの1つでは、大きなファイルにある特定のデータチャンクに関する位置情報をキャッシュしなければなりません。私はすでにマップに配置されたstd::basic_istream<char>::pos_type
の周りに構築された小さなAPIを実装しました。安全にstd :: basic_istreamをシリアル化する方法<char> :: pos_type?
これらのディスクリプタをバイトストリームにシリアル化し、ディスクに書き込んで、それ以降の使用(他の* nix-machineでも同様)する必要があります。私は、このタイプはプラットフォームに依存していますが、むしろPODタイプであることを読んでいます。だから私の質問は:
- オフセットだけでなく何かを保存する方が良いでしょうか?例えば。
std::fpos<std::mbstate_t>
読書構造の状態を保つ? std::basic_istream<char>::pos_type
(および必要に応じてその他の情報)からオフセットデータを安全に取得して復元するにはどうすればよいですか?
ありがとうございます。
実際に文字内の状態をシリアル化するのは気になりますか?あなたは実際にUTF-8などを使用していますか?単一の文字の中にある位置をシリアル化する必要がありますか? –
いいえ私はアトミックバイトオフセットだけに興味があります。しかし、おそらくパフォーマンスに影響を与える可能性のあるストリーム読み込み構造体の隠れた状態については、私には問題ありません。 – Crank
ちょうど数字である 'streamoff'をシリアライズできるようですね。あなたはキャラクタ内の位置をシリアル化する気にしないと言うので、これで十分です。 int64_tに格納することができます。 –