【发布时间】:2013-12-16 00:42:01
【问题描述】:
请告诉字符串操作函数的char16_t 版本是什么
如:
http://www.tutorialspoint.com/ansi_c/c_function_references.htm
我找到了很多参考网站,但没有人提到。
尤其是打印功能,这是最重要的,因为它可以帮助我验证 Manipulation 功能是否有效。
#include <stdio.h>
#include <uchar.h>
char16_t *u=u"α";
int main(int argc, char *argv[])
{
printf("%x\n",u[0]); // output 3b1, it is UTF16
wprintf("%s\n",u); //no ouput
_cwprintf("%s\n",u); //incorrect output
return 0;
}
【问题讨论】:
-
输出不正确的情况可能是因为终端没有使用正确的编码。尝试将输出转发到文件并查看其十六进制转储。
-
@CL 那么什么是“不正确的输出”?
-
@hyde,@chux,我不知道如何将 UNICODE 文本打印到文件中,我试试这个
code FILE *f=fopen(L"e:\\test.txt",L"w");//and _wfopen int i=fwprintf(f,L"abc\n"); printf("%d",i); fclose(f);,i 的值为 3,test.txt 的十六进制为“ 61 62 0D 0A”,正确的 UTF16-LE 应该是“61 00 62 00 0D 00 0A 00”。对于不正确的输出,我尝试了很多组合,请这个[链接](home.netvigator.com/~fhappy/unicode_printf_result.7z),请看第一个屏幕,你可以看到“α”显示在我的windows 7控制台,它证明我的控制台能够显示 UNICODE 字符