c++ - 如何自动将 POD 结构(不使用 .proto 文件)序列化为 Protocol Buffer?

标签 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 序列化和 boost serialization 支持开箱即用的类型的 friend )到 Protocol Buffer 中。 ?

最佳答案

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

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

关于c++ - 如何自动将 POD 结构(不使用 .proto 文件)序列化为 Protocol Buffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436922/

相关文章:

c++ - 在 VS2012 上将数据成员数组元素初始化为零?

c++ - 创建/加入线程时的隐式同步

c++ - 服务器端识别客户端的方法

c# - WCF反序列化如何在不调用构造函数的情况下实例化对象?

c++ - 将整数字符串解析为标准 vector ?

c++ - 如何在 C++ 中将动态二维字符串数组作为参数传递

java - IKVM.NET 对象序列化与 ObjectOutputStream 的区别

c# - MongoRepository 继承序列化错误

react-native - 如何修复react-native中的“'boost/operators.hpp'文件未找到”错误

c++ - 在 C++ 中停止 python 对象超出范围