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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta