如何查看std::cout是否支持颜色?
How to check whether std::cout support colors?
我知道您可以使用特殊转义序列输出颜色,如果终端支持的话。详情参考this question.
不过,据我所知,有些终端不支持彩色 codes/those 转义序列。如何在我的 C++ 程序中以编程方式确定终端是否支持此功能?是否有任何独立于平台的库?
库 Ncurses 似乎可以做到:
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
但这不适用于 Windows CMD,您需要类似 Cygwin 的东西。
没有可移植的方法来确定给定设备是否支持颜色。有几种编程接口(有些是可移植的,有些不是)试图确定此信息,但依赖于正确配置。例如,curses(包括 ncurses)依赖于您的设置 TERM
正确地告诉库终端可以做什么。 少数 终端具有提供此信息的能力,但这对便携性。
没有帮助
注意评论:PDCurses 不是 "port" 而是一个单独的程序。 ncurses 有一个可行的端口 Windows,这是值得的。
无论如何,您不会找到支持的便携式程序,它可以完成所要求的工作。很久以前,使用 ansi.sys
打印转义序列是 Windows 的方式,但 more than ten years.
不支持它
同样,很久以前有 conio.h
, also unsupported. If you find a working version for Windows which supports color, it probably uses the Windows console api(不可移植,但您 可能 在其他平台上找到类似的 conio.h
实现平台)。 conio.h 有一些 不受支持的 实现需要考虑。由于该利基似乎是所要求的,这里有一些相关链接:
- conio.h is missing from Windows
- conio.h file missing error [closed]
- Borland-style CONIO implementation for MinGW/Dev-C++
- Linux c++ implementation of conio.h
我知道您可以使用特殊转义序列输出颜色,如果终端支持的话。详情参考this question.
不过,据我所知,有些终端不支持彩色 codes/those 转义序列。如何在我的 C++ 程序中以编程方式确定终端是否支持此功能?是否有任何独立于平台的库?
库 Ncurses 似乎可以做到: http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
但这不适用于 Windows CMD,您需要类似 Cygwin 的东西。
没有可移植的方法来确定给定设备是否支持颜色。有几种编程接口(有些是可移植的,有些不是)试图确定此信息,但依赖于正确配置。例如,curses(包括 ncurses)依赖于您的设置 TERM
正确地告诉库终端可以做什么。 少数 终端具有提供此信息的能力,但这对便携性。
注意评论:PDCurses 不是 "port" 而是一个单独的程序。 ncurses 有一个可行的端口 Windows,这是值得的。
无论如何,您不会找到支持的便携式程序,它可以完成所要求的工作。很久以前,使用 ansi.sys
打印转义序列是 Windows 的方式,但 more than ten years.
同样,很久以前有 conio.h
, also unsupported. If you find a working version for Windows which supports color, it probably uses the Windows console api(不可移植,但您 可能 在其他平台上找到类似的 conio.h
实现平台)。 conio.h 有一些 不受支持的 实现需要考虑。由于该利基似乎是所要求的,这里有一些相关链接:
- conio.h is missing from Windows
- conio.h file missing error [closed]
- Borland-style CONIO implementation for MinGW/Dev-C++
- Linux c++ implementation of conio.h