boost property_tree的read_xml的第一個引數不支援中文路徑的解決方案

hugoo_hu發表於2012-12-30

以下解決方法轉自百度知道:http://zhidao.baidu.com/question/335129108.html


boost庫中讀取xml的函式 read_xml的第一個引數不支援中文路徑?

2011-10-28 15:35提問者: qw_222 |瀏覽次數:244次
using boost::property_tree::ptree;
        ptree pt;
        boost::array<string,400> tmpList;
        read_xml(“E:\新建資料夾\test.xml”, pt);

會拋異常 can not open

如何才能讓它支援中文路徑
我來幫他解答
滿意回答
2011-10-28 22:19
boost內部實際上用的是STL的串流

有時候用ifstream或ofstream開啟帶有中文路徑的檔案會失敗。

解決辦法:
1、使用C語言的函式設定為中文執行環境
setlocale(LC_ALL,"Chinese-simplified");

2、使用STL函式設定為系統語言環境
std::locale::global(std::locale(""));

當然選2啦!

boost::property_tree::wptree wpt;

std::locale::global(std::locale(""));

boost::property_tree::xml_parser::read_xml("E:\\新建資料夾\\test.xml",wpt);
經試用,方法是成功的。

相關文章