Agu*_*i-N 131 c++ serialization
是否可以在C++中序列化和反序列化一个类?
我已经使用Java 3年了,序列化/反序列化在这种语言中相当简单.C++有类似的功能吗?是否有处理序列化的本机库?
一个例子会有所帮助.
Hea*_*eek 93
该Boost::serialization
库处理这个相当典雅.我在几个项目中使用过它.这里有一个例子程序,说明如何使用它,在这里.
唯一的本地方法是使用流.这基本上就是所有Boost::serialization
库所做的,它通过设置框架将对象写入类似文本的格式并使用相同的格式读取它来扩展stream方法.
对于内置类型,或者您自己的类型operator<<
和operator>>
正确定义,这相当简单; 有关更多信息,请参阅C++ FAQ.
Fra*_*ger 16
提升是一个很好的建议.但如果你想自己动手,那就不那么难了.
基本上,您只需要一种方法来构建对象图,然后将它们输出为某种结构化存储格式(JSON,XML,YAML等等).构建图形就像利用标记递归体面对象算法然后输出所有标记对象一样简单.
我写了一篇文章描述了一个基本的(但仍然很强大的)序列化系统.您可能会觉得有趣:使用SQLite作为磁盘文件格式,第2部分.
Fra*_*ger 13
至于"内置"图书馆去了,<<
并>>
已进行序列化特别保留.
您应该覆盖<<
以将对象输出到某个序列化上下文(通常是一个iostream
)并>>
从该上下文中读取数据.每个对象负责输出其聚合的子对象.
只要对象图不包含循环,此方法就可以正常工作.
如果是,那么您将不得不使用库来处理这些周期.