协议缓冲说它可以包含的字节的任意序列 。 但如果我的数据包含“\ 0”,如何协议缓存可以从一个字符串可变编码我的整个数据。
Answer 1:
C ++实现协议缓冲区的返回字节和字符串类型为std::string
。 该结构包含一个长度函数告诉你相应的数据多长时间(以及数据本身。)因此,有嵌入式的没有特别的意义\0
字符。
设置函数接受一个字符串太,或有接受缓冲区和长度的版本。 如果你想设置一个字段,你可以只是这样做:
pb.set_foo( std::string( data, data_length ) );
要么
pb.set_foo( data, data_length );
文章来源: why protocol buffer bytes is string in c++?