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 中的数字。您使用转储目标实例化它,例如流、字符数组等...
看了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 中的数字。您使用转储目标实例化它,例如流、字符数组等...