1

我可以使用以下代码输出单个字符:

#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);
4

2 回答 2

2
wprintf(L"%ls", str)

于 2011-05-22T01:37:04.640 回答
0

这有点棘手,你必须知道你的内部是什么wchar_t意思。(请参阅此处进行一些讨论。)基本上,您应该通过mbstowcs/与环境进行通信wcstombs,并通过iconv(从 WCHAR_T 转换为 WCHAR_T)与具有已知编码的数据进行通信。

(这里的例外是 Windows,您无法真正与环境进行有意义的通信,但您可以直接使用 Windows API 函数在宽版本中访问它,并且可以将宽字符串直接写入消息框等。)

也就是说,一旦您有了内部宽字符串,您可以使用 将其转换为环境的多字节字符串wcstombs,或者您可以使用printf("%ls", mywstr);which 为您执行转换。只是不要忘记setlocale(LC_CTYPE, "")在程序开始时调用。

于 2011-06-15T16:48:29.637 回答