c ++如何序列化/反序列化对象?

时间:2011-05-11 06:53:02

标签: c++

  

可能重复:
  How to save c++ object into a xml file and restore back?

有人能告诉我什么是对象(当然)进行分散和反序列化的最佳方法?我有一个包含很多字符串,int值的类。什么是创建XML的西方方式,然后(当我有xml时)打开它并获取值? 你能给我一些代码示例吗?

2 个答案:

答案 0 :(得分:4)

要序列化/反序列化对象,只需执行以下操作:

ofstream f( "output.bin", ios::binary );

f.write( (char *) &myObject, sizeof( myObject ) );
f.close();

// later...

ifstream f( "output.bin", ios::binary );
MyClass myObject;
f.read( (char *) &myObject, sizeof( myObject ) );
f.close();

但是,这有很多缺点。例如,您的应用程序将无法使用在不同体系结构的计算机中序列化的对象。另一个大问题是你的对象与其他对象没有任何关系,即它们必须是简单的对象。

这就是人们在不同架构中使用更易理解的格式的原因。带结构的文字XML。您可以使用许多XML库,例如Xerces

有各种策略,但是从非常简单的策略中你甚至可以在你想要持久化的每个类中编写自己的toXML()方法,以及相应的[static] fromXML(),并使用你自己的XML解析器

当然,使用像Xerces这样的库并符合其需求会更好。

正如您所看到的,所有这些见解都超出了答案的可能性。

您必须阅读有关XML,然后是Xerces(或其他XML解析器)的内容,然后找出如何将其应用于您的应用程序。如您所见,这是一个广泛的主题。

答案 1 :(得分:3)

您应该查看boost.serialization