boost :: property_tree :: json_parser y caracteres de ancho de dos bytes
Introducción
<code>std::string text = "á"; </code>
"á" es un carácter de dos bytes (asumiendo una codificación UTF-8).
Así que la siguiente línea imprime 2.
<code>std::cout << text.size() << "\n"; </code>
Perostd::cout
Todavía imprime el texto correctamente.
<code>std::cout << text << "\n"; </code>Mi problema
pasotext
aboost::property_tree::ptree
y luego awrite_json
<code>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"; </code>
El resultado es
<code>{ "text": "\u00C3\u00A1" } </code>
texto es igual a "á" que es diferente de "á".
Es posible solucionar este problema sin cambiar astd::wstring
? ¿Es posible que el cambio de biblioteca (boost::property_tree::ptree
) puede resolver este problema?