为什么协议缓冲区字节是c ++中的字符串?

xie*_*ong 18 c++ string byte protocol-buffers

协议缓冲区说它可以包含任意字节序列.但如果我的数据包含'\ 0',协议缓冲区如何从字符串变量编码我的整个数据.

Mic*_*son 21

协议缓冲区的C++实现将字节和字符串类型返回为std::string.这个结构包含一个长度函数,告诉你相应的数据有多长(以及数据本身).因此,嵌入\0字符没有特殊意义.

设置函数也接受字符串,或者有接受缓冲区和长度的版本.如果要设置字段,可以执行以下操作:

pb.set_foo( std::string( data, data_length ) );
Run Code Online (Sandbox Code Playgroud)

要么

pb.set_foo( data, data_length );
Run Code Online (Sandbox Code Playgroud)

  • 我一整天都在寻找第二传手。谢谢! (2认同)