boost :: property_tree :: json_parser i znaki dwubajtowe
Wprowadzenie
<code>std::string text = "á"; </code>
„á” ma znak dwubajtowy (zakładając kodowanie UTF-8).
Tak więc następujące odciski linii 2.
<code>std::cout << text.size() << "\n"; </code>
Alestd::cout
nadal drukuje poprawnie tekst.
<code>std::cout << text << "\n"; </code>Mój problem
Mijamtext
doboost::property_tree::ptree
a następnie dowrite_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>
Wynik to
<code>{ "text": "\u00C3\u00A1" } </code>
tekst jest równy „¡”, który jest inny niż „á”.
Czy można rozwiązać ten problem bez przełączania nastd::wstring
? Czy to możliwe, że zmieniająca się biblioteka (boost::property_tree::ptree
) może rozwiązać ten problem?