
TermColor是一个仅标题的C ++库,用于将彩色消息打印到终端。在部队的帮助下只是为了娱乐而写。 TermColor使用ANSI颜色格式,因此您可以在使用此类终端的每个系统(包括Linux和Mac OS)上使用它。
笔记
在Windows上,使用Windows API代替逃生代码,但是应用了一些限制(并非所有内容都得到支持)。这就是为什么建议进入虚拟终端处理模式并设置TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES宏来欺骗TermColor以使用ANSI颜色代码。
它是根据BSD(3条)许可证获得许可的。这基本上意味着:只要版权贴上任何您想做的事。
将termcolor.hpp (从include/termcolor/termcolor.hpp中获取)到项目中,并使用termcolor名称空间中的流操作器。
您也可以使用VCPKG安装库:
$ vcpkg install termcolor或者,如果您在MacOS上,则可以为此目的使用自制饮料:
$ brew install termcolor有关现有软件包的最新信息,请参阅以下图片:
它很容易使用。该想法建立在C ++流动机上。典型的“ Hello World”应用程序看起来像这样:
# include < iostream >
# include < termcolor/termcolor.hpp >
int main ( int /* argc */ , char ** /* argv */ )
{
std::cout << termcolor::red << " Hello, " ; // 16 colors
std::cout << termcolor::color< 100 > << " Colorful " ; // 256 colors
std::cout << termcolor::color< 211 , 54 , 130 > << " World! " ; // true colors
std::cout << std::endl;
return 0 ;
}上面的应用程序使用不同的颜色打印字符串。有一个警告。您必须忘记重置颜色,否则它们也将应用于其他印刷品。
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;上面代码的正确版本应该看起来像这样:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl;默认情况下,TermColor忽略了非TTY流的任何颜色(例如std::stringstream ),因此以下片段
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str();将使用默认颜色而不是红色打印«独角兽»。为了改变此行为,可以使用termcolor::colorize操纵器,无论如何都会强制使用颜色。
操纵器分为四组:
此外,还有16种颜色,256种颜色和真实颜色调色板的颜色操纵器。
笔记
虽然termcolor支持真实的颜色,但您使用的终端模拟器也需要运行软件以支持True Color。因此,请确保在提交问题之前得到支持。
termcolor::greytermcolor::redtermcolor::greentermcolor::yellowtermcolor::bluetermcolor::magentatermcolor::cyantermcolor::whitetermcolor::bright_greytermcolor::bright_redtermcolor::bright_greentermcolor::bright_yellowtermcolor::bright_bluetermcolor::bright_magentatermcolor::bright_cyantermcolor::bright_whitetermcolor::color<256_COLOR_CODE>termcolor::color<RED, GREEN, BLUE>termcolor::on_greytermcolor::on_redtermcolor::on_greentermcolor::on_yellowtermcolor::on_bluetermcolor::on_magentatermcolor::on_cyantermcolor::on_whitetermcolor::on_bright_greytermcolor::on_bright_redtermcolor::on_bright_greentermcolor::on_bright_yellowtermcolor::on_bright_bluetermcolor::on_bright_magentatermcolor::on_bright_cyantermcolor::on_bright_whitetermcolor::on_color<256_COLOR_CODE>termcolor::on_color<RED, GREEN, BLUE>(Windows API不支持这些操纵器,除了underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(Windows API不支持这些操纵器)
termcolor::colorizetermcolor::nocolorize<windows.h> ,全局名称空间可能会被Min/Max Macros污染。如果需要这种效果,请考虑在#include <termcolor.hpp>之前使用#define NOMINMAX 。