GNU Gettext и широкие символы - PullRequest
3 голосов
/ 03 октября 2011

Я занимаюсь разработкой игры (на самом деле я портирую ее с Gosu на SFML) на C ++. Я использую GNU Gettext в качестве системы i18n. Как вы знаете, gettext возвращает char * строки, используя локальную кодировку, обычно UTF8. Проблема в том, что мне нужно использовать широкие строки для SFML для распознавания специальных символов, таких как áéíüñ.

Таким образом, вопрос будет: как мне создать правильное wstring из вывода gettext? Было бы замечательно, если бы была какая-то функция wchar_t * w_gettext(), но ее нет. Я пробовал некоторые варианты, такие как создание wstring из исходного string путем передачи итераторов, но, очевидно, это не работает.

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Для преобразования между узкой, многобайтовой кодировкой системы и ее широким набором символов (независимо от специфики кодирования) используйте стандартные функции C mbstowcs() и wcstombs(), найденные в <cwchar>.Вот мой предыдущий пост на эту тему, а вот пример кода .

1 голос
/ 03 октября 2011

Вы можете преобразовать вашу многобайтовую строку UTF-8 в широкий символ.

В Windows используйте MultiByteToWideChar . В Unix используйте libiconv .

...