プロトコルバッファーそれは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. なぜBufferオブジェクトには大文字のBがありますか?
- 2. C++チュートリアルで文字列の配列が文字列に使用されているのはなぜですか?
- 3. C++ RapidJSON WriterとString Buffer不明な文字を出力する
- 4. C#文字列と文字列。 Visual Studioで違った扱いをするのはなぜですか?
- 5. なぜ私の文字列ベクトルは空です
- 6. XNA C#文字列が描画されないのはなぜですか?
- 7. なぜforeach文でC#コンパイラが文字列クラスを扱うのですか
- 8. はなぜ文字列が、それはC#の
- 9. なぜNode.jsのfs.readFile()は文字列ではなくバッファを返しますか?
- 10. なぜ文字列ではないですか?
- 11. なぜこの文字列トークンは文字列にキャストされますか?
- 12. Haskellのデフォルト文字列実装はなぜ文字のリンクリストですか?
- 13. C#エラー - Base-64文字列の無効な文字
- 14. なぜCocoaは空の文字列を返すのですか?
- 15. AppDomainSetup.ShadowCopyFilesが文字列であるのはなぜですか?
- 16. TypeError:予想される文字列ペイロード:<class 'bytes'>
- 17. なぜこの文字列はエコー0ですか?
- 18. なぜ文字列を分割できないのですか?
- 19. PHPは文字列に内部スマート文字列を使用しないのはなぜですか?
- 20. なぜ$ '\ 0'か$ '\ x0'は空の文字列ですか?ヌル文字でなければなりませんか?
- 21. バッファーと文字列の速度:なぜ文字列が高速になりますか?
- 22. C++は文字列を混ぜていますか?
- 23. C#で。文字列と文字列の違いは何ですか?
- 24. なぜ二つのキーワード:文字列と文字列
- 25. Cの文字配列
- 26. 区切り文字なしでC#で文字列を文字列に分割
- 27. 文字列が `this`になると文字列が切り取られるのはなぜですか?
- 28. Swiftでlet in protocolを使用できないのはなぜですか?
- 29. C#の文字列は空の文字列で終わりますか?
- 30. C#は、私はそれでキャリッジリターンと文字列が文字列
あなたは「文字列変数」とはどういう意味ですかましたか?これは 'char *'ですか?それはC、Java、または何か他のものですか? –
@Marcelo私は彼が ''から 'string'を意味していると推測しています... –
私はもうC++の人ではありませんが、' \ 0'はC++の文字列に特別な意味を持ちません。 *あなたが '\ 0'を特別に扱うメソッドを使用している場合を除きます。だから...これらのメソッドを使わないでください。 –