【问题标题】:How to serialize POD structures automatically (with no use of .proto files) into Protocol Buffer?如何将 POD 结构自动(不使用 .proto 文件)序列化到协议缓冲区中?
【发布时间】:2011-12-08 20:03:08
【问题描述】:

假设我们在一个结构中有 int、float 和两个字符串。我们想要序列化(在 Windows x86 上)通过 Internet 发送并反序列化我们相对基于 POD 的结构(在 Linux x64 上)。我喜欢 protobufs 方法,它使数据可跨不同语言序列化,但有时您只想说:

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

my_obj new_war = protobuf.deserialize(data);

并且不在乎您的结构中有哪些字段。所以我想知道是否有可能以及如何神奇地将包含结构的 POD 相似数据(说所有与 boost 序列化和boost serialization 开箱即用支持的所有类型)序列化到Protocol Buffer 中?

【问题讨论】:

  • 拜托所有神圣的事物,不要发送花车

标签: c++ serialization boost protocol-buffers


【解决方案1】:

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

顺便说一句,Protobuf 序列化为二进制数据,而不是字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2017-05-02
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多