Запуск этого фрагмента кода:Печать wchar_t дает странный выход
wchar_t *wstr = L"áßå®";
wprintf(L"%s",wstr);
дает выход:
«
вместо
áßå®
Я новичок в wchar_t
. Как получить ожидаемый результат?
Запуск этого фрагмента кода:Печать wchar_t дает странный выход
wchar_t *wstr = L"áßå®";
wprintf(L"%s",wstr);
дает выход:
«
вместо
áßå®
Я новичок в wchar_t
. Как получить ожидаемый результат?
Я считаю, что вам нужно изменить код
wprintf(L"%s",wstr);
в
wprintf(L"%ls",wstr);
Ref: От C11
стандарта, глава §7.29.2.1, курсив мой
л (ell)
Указывает, что следующие d, i, o, u, x или X применяется к длинному int или unsigned long int аргументу; что следующий указатель преобразования n применяется к указателю на длинный аргумент int; что следующий спецификатор преобразования c применяется к аргументу wint_t; , что следующий указатель преобразованияs
применяется к указателю на аргументwchar_t
; или не влияет на следующие спецификации a, A, e, E, f, F, g или G.
Изменение спецификатора формата на L "% ls" не приводит к каким-либо изменениям. Выход остается: « –
Что вы хотите сказать? –
Не очень уверен, но вы попробовали '% ls'? –
Как вы можете прочитать [HERE] (http://www.cplusplus.com/reference/cwchar/wprintf/) формат для wchar is '% ls' not'% s' – LPs