Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
协议缓冲区说它可以包含任意字节序列。但是如果我的数据包含 '\0' ,协议缓冲区如何从字符串变量中编码我的整个数据。
协议缓冲区的 C++ 实现将字节和字符串类型返回为std::string. 这个结构包含一个长度函数,告诉你对应的数据有多长(以及数据本身)。因此嵌入\0字符没有特殊意义。
std::string
\0
设置函数也接受字符串,或者有接受缓冲区和长度的版本。如果你想设置一个字段,你可以这样做:
pb.set_foo( std::string( data, data_length ) );
或者
pb.set_foo( data, data_length );