C++ C+中的扑克牌Unicode打印+;
根据,扑克牌的Unicode格式为U+1f0a1。 我想在C++中创建一个数组来腐蚀52个标准扑克牌,但是我注意到这个Unicode长2字节。 所以我下面的简单示例不起作用,如何存储长度超过2字节的Unicode字符C++ C+中的扑克牌Unicode打印+;,c++,unicode,printf,C++,Unicode,Printf,根据,扑克牌的Unicode格式为U+1f0a1。 我想在C++中创建一个数组来腐蚀52个标准扑克牌,但是我注意到这个Unicode长2字节。 所以我下面的简单示例不起作用,如何存储长度超过2字节的Unicode字符 wchar_t t = '\u1f0a1'; printf("%lc",t); 上面的代码将t截断为\u1f0a在Windows wchar\u存储UTF-16代码单元时,您必须将字符串存储为UTF-16(使用字符串文字),这对您也没有帮助,因为Windows控制台最多只能输出0
wchar_t t = '\u1f0a1';
printf("%lc",t);
上面的代码将
t
截断为\u1f0a
在Windows wchar\u存储UTF-16代码单元时,您必须将字符串存储为UTF-16(使用字符串文字),这对您也没有帮助,因为Windows控制台最多只能输出0xFFFF字符。见此:
如何存储长度超过2字节的unicode字符
您可以使用前缀为U
的char32\U t
,但无法将其打印到控制台。此外,您根本不需要char32\u t
,utf-16足以对该字符进行编码wchar\u t=L'\u2660'
,您需要前缀L
来指定它是宽字符
如果使用Visual C++编译器使用Windows,我建议一种方式:
/utf-8
,参考要打印宽字符串,请使用这是问题的一部分。。。由于wchar只存储2个字节,我正在处理更长的unicode字符。对于长度超过2个字节的字符,您可以使用
char32\u t
,但在控制台中打印此类字符似乎很困难()@Siddharthabra使用std::wstring
,而不是wchar\u t
。在wchar\u t
为2字节的平台(Windows)上,使用UTF-16编码std::wstring
,例如:std::wstring t=L“\uD83C\uDCA1”代码>这大部分是错误的。有一种方法可以在控制台中输出UTF-16,git bash与任何事情都无关,主要是,♠ != @n、 m.好的,现在我将其更改为“推荐方式”。:D“使用git bash”几乎不是推荐的方法,因为它需要安装第三方软件。各种控制台替换可以处理各种Unicode字符(我使用的是ConEmu,它显示有问题的字符没有任何问题)。