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