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

时间:2013-04-25 19:10:47

标签: c++ serialization vector struct cross-platform

我希望序列化一个矢量,以便在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 ++编程问题,应该已经为它开发了很好的解决方案。

2 个答案:

答案 0 :(得分:1)

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

我特别喜欢两个:Google的Protocol Buffers和Apache的Avro。您可以使用ZMQ。

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

答案 1 :(得分:1)

我至少会将Boost SerializationBoost gzip-filtered stream一起考虑。