協議緩衝區說它可以contain any arbitrary sequence of bytes。但如果我的數據包含'\ 0',協議緩衝區如何編碼我的整個數據從一個字符串變量。協議緩衝區字節爲什麼在C++中是字符串?
13
A
回答
12
協議緩衝區的C++實現返回的字節和字符串類型爲std::string
。這個結構包含一個長度函數,告訴你相應數據的時間長度(以及數據本身)。因此,嵌入的字符沒有特別的意義。
設置函數也接受一個字符串,或者有接受緩衝區和長度的版本。 如果你想設置一個字段,你可以只是這樣做:
pb.set_foo(std::string(data, data_length));
或
pb.set_foo(data, data_length);
+0
參見https://stackoverflow.com/questions/2845769/can-a-stdstring-contain-embedded-nulls – Raedwald 2017-11-23 22:42:38
相關問題
- 1. 字節緩衝區爲字符串GWT
- 2. 在協議緩衝區中添加字符串數組
- 3. 什麼是MessagePack /協議緩衝區的傳輸協議?
- 4. 字典在協議緩衝區
- 5. 字節緩衝區,字符緩衝區,字符串和字符集
- 6. 字節緩衝區,字符串
- 7. 協議緩衝區c#(protobuf-net)消息::字節大小
- 8. 谷歌協議緩衝區消息到字節數組C++(Windows)
- 9. 協議緩衝區
- 10. 谷歌協議緩衝區:找出什麼消息編碼在字節[]
- 11. std ::字符串與字節緩衝區(差異在c + +)
- 12. 協議緩衝區數組中的字節浪費?
- 13. 一個協議字段緩衝區作爲另一個協議緩衝區字段的消息
- 14. 協議緩衝區精簡版與常規協議緩衝區
- 15. 陣列字節或字節緩衝區,什麼是快
- 16. 谷歌的協議緩衝區在c#
- 17. 協議緩衝區在Windows C++ .Net
- 18. 協議緩衝區在解析時是否重用了字符串指針?
- 19. 緩衝區已滿時清除字符串緩衝區。這是什麼模式?
- 20. 爲什麼緩衝區[字符串]無法從緩衝區繼承[AnyRef]
- 21. 協議緩衝區與c&C++
- 22. C字符串靜態緩衝區的字節大小
- 23. C#將字符串複製到字節緩衝區
- 24. C++中的套接字協議緩衝區
- 25. 字符串緩衝區 - OutOfMemoryError
- 26. 如何將字節[]數組轉換爲字符串緩衝區
- 27. 字節緩衝區爲String在Java中
- 28. 比較緩衝區與C字符串
- 29. C#字符串數組緩衝區
- 30. TensorFlow輸入數據協議緩衝區(tf.train.Example)字符串類型爲Feature的TypeError
你所說的「字符串變量」是什麼意思?這是'char *'嗎?是C,Java還是其他? – 2012-07-13 09:21:06
@Marcelo我猜他的意思是'字符串'從''...... –
2012-07-13 09:22:24
我不再是一個C++人,但我的印象是'\ 0'在C++字符串中沒有特別的意義* *除非你使用專門處理'\ 0'的方法。所以...只是不使用這些方法? – 2012-07-13 09:23:30