我阅读了protobuf C ++编程指南的教程,它似乎在其.h函数中提供了SerializeWithCachedSizeToArray
,我也可以调用SerializeToString()
和SerializeToOstream()
。
我想知道:
(1)pb是否为cpp代码提供了其他默认的序列化/反序列化function?
(2)如何使用生成的函数
void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output
我search谷歌,但没有得到什么时候,在哪里应该使用CodedOutputStream。
任何解释? 谢谢。
1)必须做三个主要的操作序列化:a)计算总大小,b)编码,和c)转储。 例如,SerializeWithCachedSizeToArray意味着a)使用缓存的大小,c)转储到char数组。
根据如何/在哪里执行这些操作,有很多Serialize函数的变体,您可以混合/匹配库提供的实用程序或您所写的实用程序来创建其他类型。 最常见的功能是“SerializeToString / Ostream”,如你所见。 有字符串,字符数组,ostream,zlibstream,等等。
2)CodedOutputStream是对标记流进行编码的工具类。 标记 – 您在'='之后放在proto中的数字。 你使用转储目标来实例化它,比如stream,char数组等等。