Nat*_*Fox 2 c++ windows unicode windows-console
我的代码:
\n\n#include <iostream>\n#include <windows.h>\n\nusing namespace std;\n\nint pos[9];\n\nint main() {\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c ", pos[0], pos[1], pos[2]);\n printf("\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90");\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c "), pos[3], pos[4], pos[5];\n printf("\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90");\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c "), pos[6], pos[7], pos[8];\n system("pause");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的控制台输出:
\n\n\n\n我知道还有其他方法可以做到这一点,但重点是使用 printf 来实现这一点:| 有任何想法吗?
\n要使用printf,并假设您使用的是美国本地化的 Windows,控制台代码页为 437(运行chcp以检查),那么如果您将源文件保存在代码页 437 中,则以下更正后的代码将起作用。一种方法是执行此操作使用Notepad++并Encoding->Character sets->Western European->OEM-US在菜单上设置。这样做的缺点是你的源代码在大多数编辑器中都无法很好地显示,除非它们特别支持 cp437,甚至 Notepad++ 在重新打开文件时如果不再次设置编码也无法正确显示它。
#include <stdio.h>\n#include <stdlib.h>\n#include <io.h>\n#include <fcntl.h>\n\nint main()\n{\n char pos[9] = {\'X\',\'O\',\'X\',\'O\',\'X\',\'O\',\'X\',\'O\',\'X\'};\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c \\n", pos[0], pos[1], pos[2]);\n printf("\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\\n");\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c \\n", pos[3], pos[4], pos[5]);\n printf("\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\\n");\n printf(" %c \xe2\x95\x91 %c \xe2\x95\x91 %c \\n", pos[6], pos[7], pos[8]);\n system("pause"); system("pause");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在 Windows 上,由于 API 本身是 UTF-16,因此更好的方法是使用以下代码并将文件保存为带 BOM 的 UTF-8:
\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <io.h>\n#include <fcntl.h>\n\nint main()\n{\n char pos[9] = {\'X\',\'O\',\'X\',\'O\',\'X\',\'O\',\'X\',\'O\',\'X\'};\n _setmode(_fileno(stdout), _O_U16TEXT);\n wprintf(L" %C \xe2\x95\x91 %C \xe2\x95\x91 %C \\n", pos[0], pos[1], pos[2]);\n wprintf(L"\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\\n");\n wprintf(L" %C \xe2\x95\x91 %C \xe2\x95\x91 %C \\n", pos[3], pos[4], pos[5]);\n wprintf(L"\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\\n");\n wprintf(L" %C \xe2\x95\x91 %C \xe2\x95\x91 %C \\n", pos[6], pos[7], pos[8]);\n system("pause");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n输出(两种情况):
\n\n X \xe2\x95\x91 O \xe2\x95\x91 X\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\n O \xe2\x95\x91 X \xe2\x95\x91 O\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\n X \xe2\x95\x91 O \xe2\x95\x91 X\nPress any key to continue . . .\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |