C++ 以独立于平台的方式序列化和压缩 vector<structs>

标签 c++ serialization vector struct cross-platform

我希望序列化一个 vector 以在 zeromq 中作为消息发送。该结构将仅包含基本类型(bool、string、int、float)。

由于我是通过网络传输的,所以我想使用某种压缩方式来节省带宽。

我还希望它与平台无关。我将从 Linux 盒子进行广播,但接收者可以是 Windows 或 Linux。

第三方库也可以,只要它们可以在 Windows 和 Linux 下运行即可。

要发送 zeromq 消息,通常使用诸如 memcpy 之类的东西来“加载”数据。 http://api.zeromq.org/2-1:zmq-msg-data

有人可以指出适当的库并提供序列化/压缩和随后的反序列化/解压缩的简单示例代码吗?我想发送的结构如下所示:

struct sampledata {
  string testing_text;
  int testing_int;
  float testing_number;
  bool testing_bool;
}

我觉得这一定是一个常见的 C++ 编程问题,应该已经为它开发了很好的解决方案。

最佳答案

您正在寻找的是一个通用的序列化库; there are many available options .

我特别喜欢两个:Google 的 Protocol Buffers和 Apache 的 Avro .您可以将其中任何一个与 ZMQ 一起使用。

如果您访问 ZMQ FAQ (转到“常规”部分),您会发现 Protocol Buffers 是提到的代理序列化格式之一。

关于C++ 以独立于平台的方式序列化和压缩 vector<structs>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222852/

相关文章:

C++ STL vector 迭代器不兼容

c++ - 重写不共享通用接口(interface)的基类的虚函数

c++ - 带间隔的最佳无限 C++ while 循环

Django - 序列化为 JSON,如何序列化 FK User 对象

c# - 将设置保存在包含 List<CustomClass> 的类中

c++ - 使用 std::begin 和 std::end 进行 vector 初始化

c++ - vector vector 的初始化?

c++ - 内存屏障会驯服微软的优化器吗?

c++ - 模拟几何布朗运动

java - 通过 Socket 发送可序列化的类