boost::property_tree读取解析ini文件
在C++11下,宽字节和单字节转换就简单了。使用std::wstring_convert和std::codecvt_utf8 来处理UTF8与WChar之间的互转.
另外可以保存函数,使用ptree:
1 struct debug_simple
2 {
3     int itsNumber;
4     std::string itsName; //这里使用string就可以
5     void load(const std::string& filename); //载入函数
6     void save(const std::string& filename); //保存函数
7 };
保存函数,使用ptree:
 1 void debug_simple::save( const std::string& filename )
 2 {
 3     using boost::property_tree::ptree;
 4     ptree pt;
 5 
 6     pt.put("debug.number",itsNumber);
 7     pt.put("debug.name",itsName);
 8 
 9     write_xml(filename,pt);
10 }
载入函数使用的wptree,读取的值为wstring,需转换成string
 1 void debug_simple::load( const std::string& filename )
 2 {
 3     using boost::property_tree::wptree;
 4     wptree wpt;
 5     read_xml(filename, wpt);
 6 
 7     itsNumber = wpt.get<int>(L"debug.number");
 8     std::wstring wStr = wpt.get<std::wstring>(L"debug.name");
 9     itsName = std::string(wStr.begin(),wStr.end()); //wstring转string
10 }
main函数:
 1 int _tmain(int argc, _TCHAR* argv[])
 2 {
 3     
 4     try
 5     {
 6         debug_simple ds,read;
 7         ds.itsName = "汉字english";
 8         ds.itsNumber = 20;
 9 
10         ds.save("simple.xml");
11         read.load("simple.xml");
12 
13         std::cout<<read.itsNumber<<read.itsName;
14 
15     }
16     catch (std::exception &e)
17     {
18         std::cout << "Error: " << e.what() << "\n";
19     }
20     return 0;
21 }
由于.ini文件是utf-8格式的,所以操作时要utf-8到unicode转换,或unicode到utf-8转换;
boost::property_tree读取解析ini文件--推荐,布布扣,bubuko.com
boost::property_tree读取解析ini文件--推荐
原文:http://www.cnblogs.com/lidabo/p/3906069.html