在C++中可以序列化和反序列化一个类吗?
我已经使用Java三年了,序列化/反序列化在该语言中相当简单。C++有类似的功能吗?是否有处理序列化的本机库?
举个例子会很有帮助。
发布于 2008-10-24 18:24:06
Boost::serialization库很好地处理了这一点。我已经在几个项目中使用过它。这里有一个示例程序,展示了如何使用它,here。
唯一的本机方法是使用streams。这就是Boost::serialization库所做的全部工作,它通过设置一个框架来扩展流方法,以便将对象写成类似文本的格式,并从相同的格式中读取它们。
对于内置类型,或者您自己正确定义了operator<<和operator>>的类型,这非常简单;有关更多信息,请参阅the C++ FAQ。
发布于 2014-03-02 09:00:53
我知道这是一个古老的帖子,但它是搜索c++ serialization时最先出现的帖子之一。
我鼓励任何能够访问C++11的人看看cereal,这是一个仅支持C++11头的序列化库,它开箱即用,支持二进制、JSON和XML。cereal被设计为易于扩展和使用,并具有类似于Boost的语法。
发布于 2008-10-24 18:44:07
Boost是一个很好的建议。但如果你想自己动手,也不是很难。
基本上,您只需要一种方法来构建对象图,然后将它们输出为某种结构化存储格式(JSON、XML、YAML等)。构建图形就像利用标记递归的得体对象算法,然后输出所有标记的对象一样简单。
我写了一篇文章,描述了一个初级的(但仍然强大的)序列化系统。你可能会发现它很有趣:Using SQLite as an On-disk File Format, Part 2。
https://stackoverflow.com/questions/234724
复制相似问题