2011-05-11 108 views
3

可能重複:
How to save c++ object into a xml file and restore back?C++如何序列化/反序列化一個對象?

喜,

有人能告訴我什麼是seralialize和反序列化(當然)一個對象的最佳方式?我有一個類,有很多字符串,int值。什麼是西方的方式來創建一個XML,然後(當我有XML)打開它並獲取值?
你能給我請代碼例子嗎?

+1

首先爲自己選擇一個XML庫 - 例如libxml2,xerces - 然後閱讀「入門教程」.... – 2011-05-11 06:57:29

+2

誰在投票呢? – 2011-05-11 06:59:20

+0

(Tony說的)+ TinyXml – Bart 2011-05-11 07:03:25

回答

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()方法,以及來自XML()的相應[static],並使用您自己的XML解析器。

當然,使用像Xerces這樣的庫會更好,並且符合它的需求。

正如你所看到的,所有這些見解都超出了這裏答案的可能性。

您必須閱讀有關XML,然後瞭解Xerces(或其他XML解析器),然後瞭解如何將其應用於您的應用程序。正如你所看到的那樣,這是一個廣泛的話題。