2011-05-13 13 views
1

我正在Ubuntu中工作。我想創建一個對象序列化。因爲我沒有找到任何可以幫助我的C++庫,所以我將自己編寫XML。我想問問怎麼做。這是確定的,如果我說:C++如何創建寫一個xml以及如何從中讀取?

std::string xml = "<?xml..."+"<name>%s</name>\n"+"<birthdate>%d</birthdate>"...+name,date;

能否請你告訴我,如果這是確定?還有一個問題:如何進行反序列化?有沒有一個庫讀取一個XML並打印你想要的值?我正在使用C++代碼。謝謝!

編輯:

.h 
//code 
class people 
{ 
public: 
people(); 
std::string name; 
std::string birthday; 
int number; 
}; 

.cpp 
//code 
people *p = new people(); 
p.name="me"; 
p.birthday=11; 
p.number=1; 

我想創建一個基於* P的XML文件。如何用libxml ++或任何庫來做到這一點?在此之後,我也想要反序列化。

+0

看看iksemel; http://code.google.com/p/iksemel/實際上是C庫。你也可以看看http://libxmlplusplus.sourceforge.net/docs/manual/html/ – Mayank 2011-05-13 08:32:04

+3

在[你的其他問題]中提到了幾個xml庫(http://stackoverflow.com/questions/5977358/c- linux-library-for-creating-an-xml-and-reading-from-an-xml-serialize-deseria)它們中的任何一個都比手工編寫要好。不,你在這裏嘗試的是行不通的,但編譯器比StackOverflow更快地告訴你。首先:閱讀,學習。然後:程序。而不是相反。只是我的兩分錢。 – 2011-05-13 08:33:31

+0

他們都沒有幫助。我想從一個對象創建一個xml,就這些。我不想在我想要序列化的類中編寫代碼。 – 2011-05-13 08:36:01

回答

2

對於C++序列化庫,請參閱Boost根據@Begemoth的評論請參閱Boost tutorial - 代碼不必添加到類中。

+0

我不能使用Boost,因爲它不會序列化一個對象,我不想在該類中添加代碼。我只想序列化一個對象並且全部都是 – 2011-05-13 08:34:45

+4

您可以將序列化作爲自由函數來實現。但是,如果您想自動將任何類序列化爲XML,C++不是該工作的工具。 – Begemoth 2011-05-13 08:58:58

+1

boost :: serialize序列化和對象。它是爲它而設計的,沒有別的......正如begemoth所說,你可以使用自由函數來將序列化與類分離(恕我直言,通常最好將所有內容保持在一起) – 2011-05-13 09:19:02