boost read_xml() 函數windows和Linux下使用總結

近期項目需要用到xml文件和屬性樹,使用boost庫中的read_xml()函數,發現一些問題,現總結如下:


1. read_xml()函數在文件boost/property_tree/xml_parser.hpp中,使用了開源的軟件rapid_xm庫;

2. 使用該函數,需要編譯boost庫,我的boost環境配置:

1) windows:include:D:\Program Files\boost\boost_1_55_0

libs: D:\Program Files\boost\boost_1_55_0\stage\lib

2) Linux:include:/home/chenchen/boost_1_55_0

    libs: /home/chenchen/boost_1_55_0/stage/lib

3. 源文件test.cpp包含頭文件:

1) #include <boost/property_tree/ptree.hpp>

2) #include<boost/property_tree/xml_parser.hpp>

聲明:using namespace boost::property_ptree;

4. 源程序 test.cpp vs2012下編譯運行通過

#include <string>
#include <iostream>
using namespace boost::property_tree;
using namespace boost::system;


int main( int argc, char* argv[] )
{
  ptree pt;
try
{
boost::property_tree::xml_parser::read_xml("D:\\工作文檔\\UmpEvent\\Debug\\conf.xml", pt);
}
catch(xml_parser::xml_parser_error sysError)
{
std::cout << "Error: " <<sysError.what() << std::endl;
}

std::cout << pt.get<std::string>("conf.theme") <<std::endl;
}

5. 需要注意的問題:

1)  windows下read_xml()函數中xml文件的位置描述字符串中,分隔文件夾位置需要用\\,讀取絕對路徑xml文件是,需要在路徑前加反義字符\或者/,如可執行文件相同路徑下的xml文件路徑爲

\.\\conf.xml

否則會報cannot open file錯誤

2) Linux下可以使用絕對位置,也可以使用相對位置,且不用加轉義符號,即“conf.xml”或者“/root/conf.xml”均可

3) 編譯時需要包含頭文件和靜態庫文件,Linux下使用-I$(INLCUDES_PATH)和-L$(LIBS_PATH)


以上,如有疑問可以給我留言。2015-01-21

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章