我知道您可以使用特殊转义序列输出颜色,如果终端支持的话。有关详细信息,请参阅 this question .
但是,据我所知,有些终端不支持颜色代码/那些转义序列。如何在我的 C++ 程序中以编程方式确定终端是否支持此功能?是否有任何独立于平台的库?
最佳答案
没有可移植的方法来确定给定设备是否支持颜色。有几种编程接口(interface)(有些是可移植的,有些不是)试图确定此信息,但依赖于正确配置。例如,curses(包括 ncurses)依赖于您正确设置 TERM
来告诉库终端可以做什么。 少数终端具有提供此信息的能力,但这对可移植性没有帮助。
注意注释:PDCurses 不是一个“端口”,而是一个单独的程序。 ncurses 有一个适用于 Windows 的端口,物有所值。
在任何情况下,您都不会找到支持的可移植程序,它可以执行所要求的操作。很久以前,使用 ansi.sys
打印转义序列是 Windows 的一种方式,但 more than ten years 不支持它。 .
同样,很久以前就有 conio.h
,还有 unsupported .如果您找到支持颜色的 Windows 工作版本,它可能使用 Windows console api (它不可移植,但您可能在其他平台上找到类似的 conio.h
实现)。 conio.h 有一些不受支持的实现需要考虑。由于该利基似乎是所要求的,因此这里有一些相关链接:
关于c++ - 如何检查 std::cout 是否支持颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30693107/