私の現在のプロジェクトでは、メッセージをバイトバッファにシリアライズする必要があるいくつかの異なるインターフェイスがあります。本当のC++プログラマが幸せになれるような方法でやっているのではないかと思います。それは私の頭の上から単なる一例だった、メッセージをシリアル化するC++の方法?
struct MyStruct {
uint32_t x;
uint64_t y;
uint8_t z[80];
};
uint8_t* serialize(const MyStruct& s) {
uint8_t* buffer = new uint8_t[sizeof(s)];
uint8_t* temp = buffer;
memcpy(temp, &s.x, sizeof(s.x));
temp += sizeof(s.x);
//would also have put in network byte order...
... etc ...
return buffer;
}
言い訳タイプミス:
は、私は通常、このような何かをするだろう。明らかに、直列化している構造体に内部ポインタがある場合、それはもっと複雑になる可能性があります。私は先のシステムがあることを知っていると仮定すると文字バッファーに直接構造体を鋳造することによりシリアル化して上記
- は、特定のシナリオのいずれかの問題があります:
だから、私は密接に関連している2つの質問を持っています同じエンディアンで?
メイン質問:もっと... erm ... C++?スマートポインタの追加以外にこれを行う方法は?私はこれがSTLがおそらくそれを扱うような共通の問題だと思っています。もしそうでなければ、とにかくC++のメカニズムを使ってやる方が良いでしょう。
EDITボーナスポイントあなたが追加したライブラリせずに、標準C++/STLを使用して、より良い方法でこの構造をシリアル化のクリーンな例を行うことができます。
Googleには[プロトコルバッファ](http://code.google.com/apis/protocolbuffers/docs/overview.html) – Joe