boost.property_tree中国語の文字化けし問題の読み取り

1490 ワード

最近突然このIDが懐かしくなって、探して帰ってきて、后で続々とその他のブログの文章を整理して帰ってきます
 
boostライブラリは使いやすいですが、新しいライブラリもあります.このboost.のように、ぶつかっています.property_treeのデフォルトでは、ワイド文字のサポートはあまり友好的ではありません.
検索して、何回かの試みを経て、良い案を見つけて、まずローカライズ符号化変換をする必要があります:
 
#include "boost/program_options/detail/utf8_codecvt_facet.hpp"

 

int test()

{

    std::wifstream f(L" .xml");

    std::locale utf8Locale(std::locale(),new boost::program_options::detail::utf8_codecvt_facet());

    f.imbue(utf8Locale);

     

    if(f)

    {

        boost::property_tree::read_xml(f,pt);

        std::wstring text = pt.get(L"test",L"");

        MessageBox(NULL,text.c_str(),L"",MB_OK);

    }

}