boost.property_tree读取中文乱码问题正确的解决方式

在使用Boost开发项目时遇到了宽字符下中文乱码的问题。常见解决方案是将内容转为UTF8后再解析,但这种方法在Boost的read_xml中会导致XML被转换两次。实际上,正确处理只需两行代码。
摘要由CSDN通过智能技术生成

开发项目的时候在使用boost,在宽字符下遇到中文乱码问题

上网上看大家都是先转成utf8在进行解析的,例如:

http://blog.csdn.net/hu_jiangan/article/details/49945373 中

void Init(const wstring& fileName, wptree& ptree)
{
  std::wifstream f(fileName);
  std::locale utf8Locale(std::locale(), new std::codecvt_utf8<wchar_t>);
  f.imbue(utf8Locale); //先转换一下
  //用wptree去解析
  property_tree::read_xml(f, ptree);
}

  他的思路没有问题,并且还用了STL库,避免了boost的繁琐。

但是在boost中对read_xml定义里包含了对xml的转换

 1 template<class Ptree>
 2     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值