c++ unicode转换成汉字
来源:百度知道 编辑:UC知道 时间:2024/05/29 17:45:35
如下函数,input是形如\u56de的字符串,我想输出"回"(\u56de是回的unicode),需要怎么做?
print(string input) {
cout<< input << endl;
}
目前的输出是
\u56de
我想输出
回
To hanyuwei70:
char c='回';这个我做不到,因为初始化input我这里没办法改,我拿到的input就已经是\u56de了
To SmallaySS:
不好意思,我用的linux,好像没有tchar.h
print(string input) {
cout<< input << endl;
}
目前的输出是
\u56de
我想输出
回
To hanyuwei70:
char c='回';这个我做不到,因为初始化input我这里没办法改,我拿到的input就已经是\u56de了
To SmallaySS:
不好意思,我用的linux,好像没有tchar.h
Unicode 的 C 语言支持
在正式情况下,从 GNU glibc 2.2 开始,wchar_t 类型只为 32 位的 ISO 10646 格式数值所特定使用,与当前使用的语言环境无关。通过 ISO C99 所要求的 __STDC_ISO_10646__ 宏的定义作为信号通知应用程序。 __STDC_ISO_10646__ 的定义用来指出 wchar_t 是 Unicode。精确的值是一个十进制的 yyyymmL 格式的常数。例如,使用:
清单 4. 指出 wchar_t 是 Unicode
#define __STDC_ISO_10646__ 200104L
是为指出 wchar_t 类型的值是由 ISO/IEC 10646 和到指定的年月为止的所有修正与技术勘误定义的字符编码表示。
对 wchar_t 的利用如这个示例所示,使用宏确定在 ISO C99 可移植代码中写双引号的方法。
清单 5. 确定写双引号的方法
#if __STDC_ISO_10646__
printf("%lc", 0x201c);
#else
putchar('"');
#fi
自己试试吧...
你直接这么做呢(C语言的)
char c='回';
printf("%c",c);
如果你的input不是"\u56de"而是"0x56de"的话
可以使用
TCHAR ch = strtol("0x56de", NULL, 16);
然后
cout<<ch<<endl;
linux下,试试把TCHAR换成wchar_t
如果你的input不是"\u56de"而是"0x56de"的话
可以使用<