我正在Linux环境下使用C++开发国际象棋游戏,并希望在Bash终端中使用Unicode字符显示棋子。是否有办法使用cout输出符号?
以下是输出骑士的示例:♞ = U+265E。
要输出Unicode字符,您只需使用输出流,就像输出ASCII字符一样。您可以将Unicode码点存储为多字符字符串:
std::string str = "\u265E";
std::cout << str << std::endl;
如果您想输出一个ASCII范围之上的单个Unicode字符,使用宽字符输出也是方便的。
setlocale(LC_ALL, "en_US.UTF-8");
wchar_t codepoint = 0x265E;
std::wcout << codepoint << std::endl;
然而,正如其他人所指出的那样,这是否正确显示取决于用户环境中的许多因素,例如用户的终端是否支持Unicode显示、用户是否安装了适当的字体等。这对于大多数预装主流发行版(如安装有Gnome的Ubuntu/Debian)来说不应该是问题,但不要期望它能在任何地方都起作用。
setlocale(LC_ALL, "en_US.UTF-8");
然后,我甚至可以使用原始的 wchar_t
字符。 - Andrew抱歉,一开始误解了您的问题。这段代码在终端中打印出一个白色的国王(我在KDE Konsole中测试过)。
#include <iostream>
int main(int argc, char* argv[])
{
std::cout <<"\xe2\x99\x94"<<std::endl;
return 0;
}
你是使用“裸”终端还是运行在X-Server下的终端?In order to tell applications to use UTF-8 encoding, and assuming U.S. English is your preferred language, you could use the following command:
export LC_ALL=en_US.UTF-8