如何使用boost ptree来解析像中文这样的宽字节字符串? boost版本是boost_1_64_0

时间:2017-08-30 03:18:09

标签: c++ json boost

我的代码在这里:

// Using chinese
std::string c1 = "中文1";
std::string c2 = "中文2";

// write json text
ptree pt_write_;
pt_write_.put("1", c1);
pt_write_.put("2", c2);
std::ostringstream os;
write_json(os, pt_write_);
std::string a = os.str();

// read json text
ptree pt_r;
std::istringstream is(a);
read_json(is, pt_r);
std::string b = pt_r.get<std::string>("2");

有一个问题,当我运行代码时出现this错误。我该如何解决?

1 个答案:

答案 0 :(得分:0)

In the file boost\property_tree\json_parser\detail\narrow_encoding.hpp

第1步:

在数组中的值为-1时替换Trail_table函数,将其替换为1;

步骤2:

将代码if (cur == end || !is_trail(*cur))替换为-> if (cur == end/* || !is_trail(*cur)*/),然后一切正常