我正在学习C ++,但无法弄清楚如何在C ++中打印特殊字符。即使我看到其他人发布了与此问题相关的信息,他们中的任何一个都可以解决此问题:
我只想打印这些字符->'♦','♥','♣','♠';
当我这样做时->
std::cout << '♦' << std::endl;
它打印出一个数字,例如14850470,但是当我将char传递给一个函数时,例如->
char foo(char a)
{
return a;
}
int main()
{
std::cout << foo('♦') << std::endl;
}
而是打印出“ª”,有什么想法吗?
(我正在使用Windows上的MSVC编译器在VSCode中编写此代码。)
编辑:答案解决了我的问题(我chcp 65001
在CL上执行)。但是,我有这个改变std::cout << '♠' << std::endl;
这种std::cout << "♠" << std::endl;
为了工作,因为作为在控制台上打印字符打印无关。
没有可移植的方法。
在Linux / mac上,终端最近将UTF-8作为默认设置。因此,当您将UTF-8二进制文件输出到标准输出时,您会看到'♦'字符。
在Windows 10 1607或更高版本上,chcp 65001
除了打印彩色表情符号外,其他都可以正常工作。由于损坏的字体配置对话框是固定的,因此您可以将TrueType字体用于chcp 65001
控制台。在程序中,您应该将UTF-8二进制文件输出到标准输出。在运行程序之前,请运行chcp 65001
并配置字体。
在Windows 10 1607之前的Windows上,您应该放弃尝试打印Unicode的尝试。
在C ++ 20上,char8_t
假定C ++标准委员会采用UTF-8。今后,C ++(C ++ 26?C ++ 29?),当<locale>
和<iostream>
被重建和支持char8_t
,您能够方便的printf Unicode字符。
我认为,您应该放弃尝试打印Unicode字符的尝试。使用支持TrueType字体和OpenType的某些库创建GUI。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句