【发布时间】:2012-05-02 21:25:17
【问题描述】:
简介
std::string text = "á";
“á”是两字节字符(假设为 UTF-8 编码)。
所以下面的行打印 2.
std::cout << text.size() << "\n";
但是std::cout 仍然可以正确打印文本。
std::cout << text << "\n";
我的问题
我将text 传递给boost::property_tree::ptree,然后传递给write_json
boost::property_tree::ptree root;
root.put<std::string>("text", text);
std::stringstream ss;
boost::property_tree::json_parser::write_json(ss, root);
std::cout << ss.str() << "\n";
结果是
{
"text": "\u00C3\u00A1"
}
文本等于“á”,它不同于“á”。
是否可以在不切换到std::wstring 的情况下解决此问题?换库(boost::property_tree::ptree)有没有可能解决这个问题?
【问题讨论】:
标签: c++ boost unicode boost-propertytree