根据this wiki link,游戏卡具有形式为U + 1f0a1的Unicode。 我想用c ++创建一个数组来处理52个标准的扑克牌,但我注意到这个Unicode的长度超过了2个字节。
所以下面我的简单示例不起作用,如何存储长度超过2个字节的Unicode字符?
wchar_t t = '\u1f0a1';
printf("%lc",t);
上述代码会将t
截断为\u1f0a
答案 0 :(得分:0)
在Windows上wchar_t存储一个UTF-16代码单元,你必须将你的字符串存储为UTF-16(使用带有prefix的字符串文字)这对你没有帮助,因为windows控制台可以仅输出最大为0xFFFF的字符。见:
答案 1 :(得分:0)
如何存储更长的2字节unicode字符?
您可以使用前缀为char32_t
的{{1}},但无法将其打印到控制台。此外,您根本不需要U
,utf-16足以编码该字符。 char32_t
,您需要前缀wchar_t t = L'\u2660'
来指定它是一个宽字符。
如果您使用Windows与Visual C ++编译器,我建议采用一种方式:
L
,参考here。