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);

Это XML with english name of map введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

Помогите, что использовать, чтобы вывести русский текст (кириллица), !из переменной!.


Ответы (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())

введите сюда описание изображениявведите сюда описание изображения

→ Ссылка