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?