protocol buffer say it can contain any arbitrary sequence of bytes. but if my data contain '\0' ,how protocol buffer can encode my whole data from a string variable.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The C++ implementation of protocol buffers returns the byte and string types as std::string
. This structure contains a length function telling you how long the corresponding data is (as well as the data itself.) Thus there is no special significance of embeded \0
characters.
The setting functions accept a string too, or there are versions that accept a buffer and length. If you want to set a field you can just do this:
pb.set_foo( std::string( data, data_length ) );
or
pb.set_foo( data, data_length );