
Termcolor-это библиотека C ++ только для заголовка для печати цветных сообщений на терминал. Написано просто для развлечения с помощью силы. Termcolor использует форматирование цвета ANSI, поэтому вы можете использовать его в каждой системе, которая используется такие терминалы (большинство систем NIX, включая Linux и Mac OS).
Примечание
В Windows используется API Windows вместо кодов побега, но применяются некоторые ограничения (не все поддерживается). Вот почему рекомендуется войти в режим обработки виртуальных терминалов и установить макрос TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES , чтобы обмануть Termcolor для использования цветных кодов ANSI.
Он лицензирован по лицензии BSD (3-rack). Это в основном означает: делайте все, что вы хотите, пока обходится авторским правом.
Добавьте termcolor.hpp (Grap It From include/termcolor/termcolor.hpp ) в проект и используйте манипуляторы потока из пространства имен termcolor .
Вы также можете использовать VCPKG для установки библиотеки:
$ vcpkg install termcolorИли, если вы находитесь в MacOS, вы можете использовать Homebrew для этой цели:
$ 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 Manipulator, который обеспечивает соблюдение цвета, несмотря ни на что.
Манипуляторы разделены на четыре группы:
Кроме того, есть цветные манипуляторы для 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. Если такой эффект желателен, пожалуйста, рассмотрите возможность использования #define NOMINMAX до #include <termcolor.hpp> .