c++ - 如何将彩色文本输出到 Linux 终端?

标签 c++ linux colors terminal

如何将彩色字符打印到支持它的 Linux 终端?

如何判断终端是否支持颜色代码?

最佳答案

你需要输出ANSI colour codes .请注意,并非所有终端都支持此功能;如果不支持颜色序列,则会出现垃圾。

例子:

 cout << "\033[1;31mbold red text\033[0m\n";

这里,\033是ESC字符,ASCII 27,后面是[,然后是0个或多个分隔的数字; ,最后是字母 m。这些数字描述了从该点开始切换到的颜色和格式。

前景色和背景色的代码是:

         foreground background
black        30         40
red          31         41
green        32         42
yellow       33         43
blue         34         44
magenta      35         45
cyan         36         46
white        37         47

此外,您还可以使用这些:

reset             0  (everything back to normal)
bold/bright       1  (often a brighter shade of the same colour)
underline         4
inverse           7  (swap foreground and background colours)
bold/bright off  21
underline off    24
inverse off      27

参见 table on Wikipedia对于其他不太广泛支持的代码。


要确定您的终端是否支持颜色序列,请读取 TERM 环境变量的值。它应该指定使用的特定终端类型(例如 vt100gnome-terminalxtermscreen、.. .).然后在 terminfo database 中查找;检查 colors 功能。

关于c++ - 如何将彩色文本输出到 Linux 终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955865/

相关文章:

python - Pygtk 和段错误

linux - BASH:检查目录中的文件是否重复?

c++ - 在 xterm 中启用颜色(从 Qt Creator 启动)

c++ - OpenCV:在哪里可以找到 CV_WINDOW_AUTOSIZE 常量?

C++ - 覆盖虚函数和多态性

c++ - 用 vector 填充 C++ 中的简单动态数组

matlab - 根据波长为 Matlab 图着色

c++ - 如何在类定义中声明基本截止时间计时器

linux - 替换换行符

r - 基于距 0 :0 lines 距离的颜色渐变散点图