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

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"的话
可以使用<