プロトコルバッファーそれはcontain any arbitrary sequence of bytesと言うことができます。私のデータに '\ 0'が含まれている場合、プロトコルバッファが文字列変数から私の全データをどのようにエンコードすることができるのでしょうか。なぜprotocol buffer bytesはC++の文字列ですか?
13
A
答えて
12
プロトコルバッファのC++実装では、バイトタイプとストリングタイプがstd::string
として返されます。この構造体には、対応するデータの長さ(データそのもの)を示す長さ関数が含まれています。したがって、埋め込まれた\0
文字の特別な意味はありません。
設定関数は文字列も受け入れるか、バッファと長さを受け入れるバージョンがあります。 あなたがフィールドを設定したい場合は、単にこれを行うことができます。
pb.set_foo(std::string(data, data_length));
または
pb.set_foo(data, data_length);
+0
https://stackoverflow.com/questions/2845769/can-a-stststring-contain-embedded-nullsも参照してください。 – Raedwald
関連する問題
- 1. 関数からC文字列を返すと、ランダムな文字が返されるのはなぜですか?
- 2. なぜBufferオブジェクトには大文字のBがありますか?
- 3. C++ RapidJSON WriterとString Buffer不明な文字を出力する
- 4. C++チュートリアルで文字列の配列が文字列に使用されているのはなぜですか?
- 5. C++の空の文字列sのs [0]が空文字列なのはなぜですか?
- 6. なぜC++の文字列配列の各文字列は同じサイズですか?
- 7. C#文字列と文字列。 Visual Studioで違った扱いをするのはなぜですか?
- 8. C#:なぜ文字列をパラメータとして文字列リテラルで構築できないのですか?
- 9. XNA C#文字列が描画されないのはなぜですか?
- 10. なぜ私の文字列ベクトルは空です
- 11. なぜforeach文でC#コンパイラが文字列クラスを扱うのですか
- 12. Cの文字ポインタ間で文字列を転送すると、プログラムがクラッシュするのはなぜですか?
- 13. 文字列が同じでないのはなぜですか?
- 14. 文字列が値でないのはなぜですか?
- 15. なぜポートは整数ではなく文字列ですか?
- 16. はなぜ文字列が、それはC#の
- 17. なぜNode.jsのfs.readFile()は文字列ではなくバッファを返しますか?
- 18. なぜ文字列ではないですか?
- 19. Haskellのデフォルト文字列実装はなぜ文字のリンクリストですか?
- 20. なぜCocoaは空の文字列を返すのですか?
- 21. ファイルからの文字列が一般的な文字列と等しくないのはなぜですか?
- 22. なぜこの文字列トークンは文字列にキャストされますか?
- 23. AppDomainSetup.ShadowCopyFilesが文字列であるのはなぜですか?
- 24. C#エラー - Base-64文字列の無効な文字
- 25. Cの文字列へのC++参照は可能ですか?
- 26. なぜC文字列に終端文字 '\ 0'を含めるべきか?
- 27. なぜこのオブジェクトのキーは文字列ですか?
- 28. BytesとしてCythonに渡す文字列
- 29. 文字列型または文字列型で一致しないのはなぜですか?
- 30. Set-ADUserコマンドで数値文字列で文字列を使用できないのはなぜですか?
あなたは「文字列変数」とはどういう意味ですかましたか?これは 'char *'ですか?それはC、Java、または何か他のものですか? –
@Marcelo私は彼が ''から 'string'を意味していると推測しています... –
私はもうC++の人ではありませんが、' \ 0'はC++の文字列に特別な意味を持ちません。 *あなたが '\ 0'を特別に扱うメソッドを使用している場合を除きます。だから...これらのメソッドを使わないでください。 –