我知道你可以使用特殊的转义序列来输出颜色,如果终端支持的话。关于详情,我参考this question。
然而,我明白有些终端不支持颜色代码/那些转义序列。在我的C++程序中,如何编程确定一个终端是否支持这个功能?是否有任何跨平台的库可以实现这一点?
我知道你可以使用特殊的转义序列来输出颜色,如果终端支持的话。关于详情,我参考this question。
然而,我明白有些终端不支持颜色代码/那些转义序列。在我的C++程序中,如何编程确定一个终端是否支持这个功能?是否有任何跨平台的库可以实现这一点?
没有一种便携式的方式可以确定给定设备是否支持颜色。有几个编程接口(一些是可移植的,一些不是)试图确定这些信息,但需要正确配置。例如,curses(包括ncurses)依赖于您正确设置TERM
以告诉库终端能做什么。少数终端有提供此信息的能力,但这并不能帮助实现可移植性。
注释:PDCurses不是“端口”,而是一个单独的程序。ncurses已经在Windows上有了可行的端口,值得一提。
无论如何,你不会找到一个可移植的程序,它是受支持的,可以做到所要求的。很久以前,在Windows中使用ansi.sys
打印转义序列是一个好方法,但已经超过十年没有支持了。
conio.h
,但它已经不支持了。如果你找到了一个支持颜色的 Windows 版本,它可能使用Windows 控制台 API(这不是可移植的,但你可能会在其他平台上找到类似的conio.h
实现)。还有一些不受支持的 conio.h 实现需要考虑。由于这个领域似乎是被请求的,这里有几个相关的链接:
ncurses
可能能够胜任这项任务。 - πάντα ῥεῖ