3

同じWindowsマシン上の32ビットプロセスと64ビットプロセスの間で、boost::serializationを使用していくつかのデータ構造をシリアル化したい。

この回答は、eos :: portal_iarchiveの使用を提案していますが、それを試したところ、STATIC_ASSERTエラーが発生しました。

// implementation only valid for narrow string
BOOST_STATIC_ASSERT(sizeof(C) == sizeof(char));

std :: wstringsもサポートする別の方法(パフォーマンスの考慮事項に使用したくないtext_iarchive以外)はありますか?

4

1 に答える 1

1

私が読んだことから、ワイド文字列をシリアル化するための標準的なアプローチは、最初にそれらをUTF-8ナロー文字列としてエンコードすることです。ただし、これは必要以上にオーバーヘッドになる可能性があります。

Boost.Serializationサンプルディレクトリには、ポータブルバイナリアーカイブの代替実装があります。Boost.Serializationのドキュメントでは、その最大の欠点は、ポータブル浮動小数点のサポートの欠如と厳密なテストの欠如であるように思われるため、ポータブルフロートが必要ない場合は、ニーズを満たすことができます。

他のシリアル化ライブラリを調べたかどうかはわかりませんが、libs11nProtocolBuffersなどのいくつかの選択肢があります。(個人的には、Boost.SerializationとProtocol Buffersの両方を使用したので、Protocol Buffersを好みます。)

于 2011-10-25T12:37:27.850 に答える