protobuf 和 Serialized 提供的其他目标类型 Array/String/Ostream

Other target types provided by protobuf and Serialized Array/String/Ostream

看了protobuf C++ programming guide的教程,好像在.h函数里面提供了SerializeWithCachedSizeToArray,我也可以调用SerializeToString()SerializeToOstream()

我想知道:

(1) pb 是否为 cpp 代码提供其他默认 serialize/de-serialize 函数?

(2)如何使用

的生成函数
void SerializeWithCachedSizes(
  ::google::protobuf::io::CodedOutputStream* output

我搜索了 google 但没有找到应该在何时何地使用 CodedOutputStream。

有什么解释吗?谢谢。

1) 序列化必须完成三个主要操作:a) 计算总大小,b) 编码,c) 转储。例如,SerializeWithCachedSizeToArray 意味着 a) 使用缓存的大小,以及 c) 转储到 char 数组。

根据 how/where 执行这些操作,Serialize 函数有很多变体,您可以 mix/match library-provided 实用程序或 what-you-wrote 实用程序来创建其他类型.如您所见,最常见的函数是 'SerializeToString/Ostream'。有字符串、字符数组、ostream、zlibstream 等等。

2) CodedOutputStream 是一个实用程序 class,用于对标记流进行编码。标记 - 您在“=”之后放入 proto 中的数字。您使用转储目标实例化它,例如流、字符数组等...