
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 。