我阅读了protobuf C++编程指南的教程,它的.h函数中似乎提供了SerializeWithCachedSizeToArray
,我还可以调用SerializeToString()
和SerializeToOstream()
.
我想知道:
(1) pb是否为cpp代码提供其他默认的序列化/反序列化函数?
(2)如何使用生成的函数
void SerializeWithCachedSizes(
::google::protobuf::io::CodedOutputStream* output
我搜索了 google,但没有找到应该在何时何地使用 CodedOutputStream。
有什么解释吗?谢谢。
最佳答案
1) 序列化必须完成三个主要操作:a) 计算总大小、b) 编码和 c) 转储。例如,SerializeWithCachedSizeToArray 意味着 a) 使用缓存大小,以及 c) 转储到 char 数组。
根据执行这些操作的方式/地点,序列化函数有很多变体,您可以混合/匹配库提供的实用程序或您编写的实用程序来创建其他类型。如您所见,最常见的函数是“SerializeToString/Ostream”。例如,有字符串、字符数组、ostream、zlibstream 等。
2) CodedOutputStream 是一个用于对标记流进行编码的实用程序类。标签 - 在“=”之后放入原型(prototype)中的数字。你用转储目标实例化它,例如流、字符数组等...
关于linux - protobuf 和 Serialized Array/String/Ostream 提供的其他目标类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41604011/