如何自动序列化POD结构(不使用.proto文件)到协议缓冲区?

时间:2011-12-08 20:03:09

标签: c++ serialization boost protocol-buffers

假设我们在结构中有int,float和两个字符串。我们希望序列化(在Windows x86上)通过互联网发送并反序列化我们相对基于POD的结构(在Linux x64上)。我喜欢使用protobufs方法,使数据可以在不同语言中进行序列化,但有时您只想说出类似的内容:

my_obj var;
string data =protobuf.serialize(var);

my_obj new_war = protobuf.deserialize(data);

并不关心你的结构中有哪些字段。所以我想知道是否有可能以及如何神奇地序列化POD相似数据(比如所有那些具有提升序列化的朋友以及boost serialization支持开箱即用的所有类型)包含Protocol Buffer的结构?

1 个答案:

答案 0 :(得分:1)

您可以定义一个Protobuf模式,将POD结构表示为名称和值对的集合,其中每个值都是基本类型的并集,但真正的问题是C ++无法内省任意类型。因此,在代码中的某处,您需要提供类型的描述。

BTW,Protobuf序列化为二进制数据,而不是字符串。