您的位置:首页 > 编程语言 > C语言/C++

C++使用protobuf传输中间包含\0的字节数组

2015-12-09 11:52 525 查看
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 );

以上的方式在读取的时候,还是被转换为string(到第一个\0)

可以通过这样的方式解决:

pt.mutable_foo(),协议中再加上length即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: