我正在尝试在 dev-c++ 中打印出一个心形符号。
打印出我写下的一颗心
#include <iostream>
using namespace std;
int main()
{
char heart = 3;
cout << "Heart = " << heart << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,它不会在我的计算机上打印出心形。我还将 ANSI 设置更改为“是”。我的同学和教授可以看到心形符号,但看不到我:/有人可以帮忙吗?
虽然 ASCII 代码 3 是控制字符,但假定所选字体支持,默认的美国 Windows 代码页 437 和西欧 Windows 代码页 850 将打印Heart = \xe2\x99\xa5在 cmd.exe 窗口中。这与打印某些控制字符符号的旧 DOS 代码页向后兼容。您的系统可能未设置支持它的字体,或者它是不同的代码页。用于chcp检查代码页、chcp 437更改代码页以及检查窗口的“属性”页、“字体”选项卡。Consolas、Courier New 和 Lucida Console 字体都支持心形。
C:\\test>type test.cpp\n#include <iostream>\nusing namespace std;\nint main()\n{\n char heart = 3;\n cout << "Heart = " << heart << endl;\n return 0;\n}\nC:\\test>cl /nologo /EHsc /W4 test.cpp\ntest.cpp\n\nC:\\test>chcp\nActive code page: 437\n\nC:\\test>test\nHeart = \xe2\x99\xa5\nRun Code Online (Sandbox Code Playgroud)\n屏幕截图(Consolas 字体):
\n
在 Windows 上输出正确字符的更可靠方法是将控制台文本模式设置为支持宽字符并输出正确的 Unicode 字符。这仍然需要支持 Unicode 字符的字体,在本例中为 U+2665 BLACK HEART SUIT,但不关心 Windows 支持什么代码页。
\n#include<fcntl.h>\n#include <io.h>\n#include <iostream>\n\nint main () {\n _setmode(_fileno(stdout), _O_U16TEXT);\n std::wcout << L\'\\u2665\' << std::endl;\n}\nRun Code Online (Sandbox Code Playgroud)\n