我想存储一个带有来自extend ascii table的字符的字符串,然后打印它们。 我试过了:
wchar_t wp[] = L"Росси́йская Акаде́мия Нау́к ";
printf("%S", wp);
我可以编译,但是当我运行它时,我的终端中实际上没有显示任何内容。
你能帮我吗?
编辑:回复此评论:
wprintf(L"%s", wp);
抱歉,我忘了提到我只能使用write(),因为我的第一次尝试只使用printf
。
答案 0 :(得分:1)
如果你想要宽字符(每个16位)作为输出,请按照迈克尔的建议使用以下代码:
wprintf(L"%s", wp);
如果你需要utf8输出,你必须使用iconv()进行两者之间的转换。请参阅question 7469296作为起点。
答案 1 :(得分:0)
您需要先调用 setlocale()
并在 %ls
中使用 printf()
:
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "");
// setlocale(LC_ALL, "C.UTF-8"); // this also works
wchar_t wp[] = L"Росси́йская Акаде́мия Нау́к";
printf("%ls\n", wp);
return 0;
}
有关 setlocale()
的更多信息,请参阅 Displaying wide chars with printf