Как использовать русский текст в SFML? - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь напечатать русский текст в своем приложении SFML, но получаю только странные символы. Я знаю, что я могу сделать:

text.setString(L"blabla")

Однако я хочу взять текст из файла. Я использую Unicode в своем проекте. Снимок экрана:

Screenshot

1 Ответ

2 голосов
/ 27 февраля 2020

Для совместимости и простоты вы можете использовать UTF8 для хранения файла. Прочитайте файл и затем преобразуйте строку UTF8. Если вы сохраняете файл в Notepad et c. затем убедитесь, что он сохранен в формате UTF8. При работе с файлами UTF16 вы столкнетесь с дополнительными сложностями. Формат ANSI устарел и не рекомендуется.

#include <fstream>
#include <string>
#include <sstream>
...

std::ofstream fout(L"file.txt"); //Visual Studio allows wide char file name here
fout << u8"Test ελληνικά...";
fout.close();

std::ifstream fin(L"file.txt");
std::stringstream ss;
ss << fin.rdbuf();
std::string utf8 = ss.str();
sf::String str = sf::String::fromUtf8(utf8.begin(), utf8.end());
...