我可以使用以下代码输出单个字符:
#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);
wprintf(L"%ls", str)
这有点棘手,你必须知道你的内部是什么wchar_t
意思。(请参阅此处进行一些讨论。)基本上,您应该通过mbstowcs
/与环境进行通信wcstombs
,并通过iconv
(从 WCHAR_T 转换为 WCHAR_T)与具有已知编码的数据进行通信。
(这里的例外是 Windows,您无法真正与环境进行有意义的通信,但您可以直接使用 Windows API 函数在宽版本中访问它,并且可以将宽字符串直接写入消息框等。)
也就是说,一旦您有了内部宽字符串,您可以使用 将其转换为环境的多字节字符串wcstombs
,或者您可以使用printf("%ls", mywstr);
which 为您执行转换。只是不要忘记setlocale(LC_CTYPE, "")
在程序开始时调用。