需要在c ++中推荐对象序列化库

时间:2010-03-20 07:04:52

标签: c++ c serialization

我正在寻找c ++中对象序列化/反序列化库的建议?哪一个是最先进和开源的?

可以处理吗

  • 用户定义的任何类?
  • 对象层次结构(父类和子类)?
  • 一棵物体树? A类具有B类属性,其属性为C类
  • STL容器? A类有一个B类矢量?
  • 物体的循环? A类有一个指向B的指针,它有一个指向A?
  • 的指针

我找到了boost序列化库。我不确定http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/tutorial.html

的限制是什么

3 个答案:

答案 0 :(得分:3)

Protocol buffers是由Google开发和使用的用于跨语言对象序列化的库。它的概念可能与您所描述的有所不同,但值得一看。

答案 1 :(得分:3)

这真的取决于你在寻找什么。如果您正在寻找图书馆内的超快速度和快速开发,那么Boost非常棒。如果你正在寻找超快的速度,更多的可定制性和跨库二进制兼容性,那么Qt是一个很好的解决方案(并不是说Boost也不能做到这一点)。如果您正在寻找疯狂的互操作性,那么请寻找基于文本的序列化系统,如JSON(jsoncpp),YAML(yamlcpp)或XML(方式太多) ,每个都有大约80亿个独立的图书馆。

答案 2 :(得分:1)

Linderdaum Engine Core(iObject,iStaticClass和clLinker对象)为C ++提供自定义RTTI。

序列化背后的想法很简单:我们使用自动源代码后处理器(LSDC)生成所有保存/加载代码以及所有元类和属性的注册。 可以将任何对象序列化为基于抽象树的标记语言脚本。支持XML和自定义JSON(我们称之为XLML)脚本。

此答案中描述了实施细节:https://stackoverflow.com/a/10332336/1182653

  1. 支持从iObject派生的任何类
  2. 支持对象层次结构
  3. 支持对象的“树”
  4. 支持
  5. std :: vector-like容器(支持push_back / size语义)
  6. 嗯,属性是显式定义的,“指针修正”可以在自定义的iObject :: EndLoad()方法中执行(在用户类中重新定义)