boost :: property_tree :: json_parser und zwei Byte breite Zeichen

Einführung
<code>std::string text = "á";
</code>

"á" ist ein Zwei-Byte-Zeichen (unter der Annahme einer UTF-8-Codierung).
Also folgende Zeile druckt 2.

<code>std::cout << text.size() << "\n";
</code>

Aberstd::cout druckt den Text weiterhin korrekt aus.

<code>std::cout << text << "\n";
</code>
Mein Problem

Ich passetext zuboost::property_tree::ptree und dann zuwrite_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>

Das Ergebnis ist

<code>{
    "text": "\u00C3\u00A1"
}
</code>

Text ist gleich "Á", was sich von "Á" unterscheidet.

Es ist möglich, dieses Problem zu beheben, ohne zu wechselnstd::wstring? Ist es möglich, dass sich die Bibliothek ändert (boost::property_tree::ptree) kann dieses Problem lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage