我知道如果终端支持,你可以使用特殊的转义序列输出颜色。有关详细信息,请参阅this question。
但是,据我所知,有些终端不支持颜色代码/转义序列。如何在我的C ++程序中以编程方式确定终端是否支持此操作?是否有任何与平台无关的库?
答案 0 :(得分:4)
没有可移植的方法来确定给定设备是否支持颜色。有几个编程接口(一些是可移植的,一些不是),它们试图确定这些信息,但依赖于正确配置。例如,curses(包括ncurses)正确地依赖于您的设置TERM
来告诉库终端可以做什么。 少数终端能够提供此信息,但这对可移植性没有帮助。
注意到评论:PDCurses不是"端口"但是一个单独的程序。 ncurses有一个可操作的端口到Windows,它的价值。
在任何情况下,您都不会找到支持的便携式程序,它可以执行所要求的操作。很久以前,使用ansi.sys
打印转义序列是使用Windows的方法,但more than ten years不支持它。
同样,很久以前还有 conio.h
,还有unsupported。如果您找到支持颜色的Windows的工作版本,它可能使用Windows console api(不可移植,但您可能在其他平台上找到可比较的conio.h
实现)。有一些不受支持的实现的conio.h需要考虑。由于这个利基似乎是所要求的,这里有一些相关的链接:
答案 1 :(得分:1)
库Ncurses似乎能够做到: http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
但是这对Windows CMD不起作用,你需要像Cygwin这样的东西。