C++ | SFML | Иероглифы вместо кириллицы | Написать текст из переменной на русском
Не могу вывести на экран русский текст. Просмотрел всевозможные сайты, нашел такой способ:
text.setString(L"Some text");
window.draw(text);
И да, он работает, русский текст выводится корректно.
Но все зло в том, что я беру текст из XML при помощи TinyXML2, т.е переношу текст в переменную, и уже не могу добавить префикс L для его работы. Пробовал способ с wstring, не нашел нормального объяснения, как это работает и что куда ставить, скопировал, работать не стало.
XML:
<root>
<info>
<map_name>XML файл на самом деле больше, просто тут экономлю место</map_name>
</info>
</root>
C++:
//map_document - объект XMLDocument, которому присваивается документ XML выше
XMLNode* root = map_document->FirstChildElement("root");
XMLElement* element = root->FirstChildElement("info");
Map::map_name = element->FirstChildElement("map_name")->GetText(); //Код взят из конструктора карты
//Когда я пишу в XML английский текст, все выводится нормально, весь код выше, считайте, просто берет текст из XML <map_name>
//...Вырезано объявление текста и окна... map1 - Объект Map
sf::String test_string = map1.getMapName(); // Функция, дает map_name выше, с англ, все работает корректно
text.setString(test_string);
window.draw(text);
Помогите, что использовать, чтобы вывести русский текст (кириллица), !из переменной!.
Ответы (1 шт):
Автор решения: BCanary
→ Ссылка
Ура, 7 долбанных часов спустя (а потому что я уже 7 часов с этим вожусь)
string map_name = test_map.getMapName();
text.setString(String::fromUtf8(map_name.begin(), map_name.end()));
Решение - sf::String::fromUtf8(youstring.begin(), youstring.end())





