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?

questionAnswers(2)

yourAnswerToTheQuestion