如何在 Windows 10 中使用 C++ 输出低 ASCII?

How to output low ASCII using C++ in Windows 10?

我正在尝试在 Windows 10 上为一个简单的 C++ 贪吃蛇游戏输出方向箭头。但是,使用此 table 作为参考:

ASCII reference

我得到的只是控制台中的这个小问号:

Tiny question mark

我想输出符号 16、17、30 和 31。我不太懂程序员,所以这可能是一些基本错误,但有些符号确实有效,而另一些则导致上面的那个符号。

一个小例子:

void showSnake() {
    char snakeHead;
    snakeHead = 31;
    cout << snakeHead; //THIS SHOWS THE TINY QUESTION MARK
    snakeHead = 62;
    cout << snakeHead; //THIS SHOWS THE ">" SYMBOL
}

你应该使用Unicode,你会有更多的字符选择。

https://en.wikipedia.org/wiki/List_of_Unicode_characters 上,我发现这个符号“▶”与您想要使用的符号相似。

它的unicode值是U+25BA,这意味着你可以在C++中创建一个值为'\u25BA'的字符。

但是实际上该值会超出 char 类型的范围,因此您必须使用宽字符 (wchar) 才能完成工作。

根据 this answer you should also toggle support for Unicode character in stdout using the _setmode function (see here) 来自 C 运行-时间库。

#include <iostream>
#include <io.h>

int main() {
     _setmode(_fileno(stdout), _O_U16TEXT);
     std::wcout << L'\u25BA';
}

setlocale() 行是为了防止默认语言环境不支持非 ACSII 输出(我的机器上不支持)。