23

プロトコルバッファは、任意のバイトシーケンスを含むことができると言います。しかし、データに '\0' が含まれている場合、プロトコル バッファが文字列変数からデータ全体をエンコードする方法を教えてください。

4

1 に答える 1

30

プロトコル バッファの C++ 実装は、バイト型と文字列型を として返しますstd::string。この構造体には、対応するデータ (およびデータ自体) の長さを示す長さ関数が含まれています。したがって、埋め込み\0文字に特別な意味はありません。

設定関数も文字列を受け入れるか、バッファと長さを受け入れるバージョンがあります。フィールドを設定したい場合は、これを行うだけです:

pb.set_foo( std::string( data, data_length ) );

また

pb.set_foo( data, data_length );
于 2012-07-13T09:25:59.447 に答える