Широкие символы - как их использовать? - PullRequest
1 голос
/ 22 мая 2011

Я могу вывести один символ, используя этот код:

#include <locale.h>
#include <stdio.h>
#include <wchar.h>

main(){

setlocale(LC_CTYPE, "");
wchar_t a = L'Ö';
putwchar(a);

}

Как мне адаптировать код для вывода строки?

Что-то вроде

wchar_t *a = L"ÖÜÄöüä";
wprinf("%ls", a);

Ответы [ 2 ]

2 голосов
/ 22 мая 2011
wprintf(L"%ls", str)

0 голосов
/ 15 июня 2011

Это немного сложно, вы должны знать, что означают ваши внутренние wchar_t s.( См. Здесь для небольшого обсуждения.) В основном вы должны общаться со средой через mbstowcs / wcstombs, а с данными с известным кодированием через iconv (преобразование из и в WCHAR_T).

(Исключением здесь является Windows, где вы не можете реально взаимодействовать со средой, но вы можете получить доступ к ней в широкой версии напрямую с помощью функций Windows API, и вы можете писать широкие строки непосредственно в окнах сообщений и т. Д..)

Тем не менее, если у вас есть внутренняя широкая строка, вы можете преобразовать ее в многобайтовую строку среды с помощью wcstombs, или вы можете просто использовать printf("%ls", mywstr);, которая выполняет преобразование для вас.Только не забудьте вызвать setlocale(LC_CTYPE, "") в самом начале вашей программы.

...