
Termcolor es una biblioteca C ++ de solo encabezado para imprimir mensajes de colores en la terminal. Escrito solo por diversión con la ayuda de la fuerza. Termcolor utiliza el formato de color ANSI, por lo que puede usarlo en cada sistema que se utilice tales terminales (la mayoría de los sistemas *Nix, incluidos Linux y Mac OS).
Nota
En Windows, se usa la API de Windows en lugar de los códigos de escape, pero se aplican algunas limitaciones (no todo es compatible). Es por eso que se recomienda ingresar al modo de procesamiento de terminal virtual y establecer TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES para engañar a TermColor para usar códigos de color ANSI.
Tiene licencia bajo la licencia BSD (3 cláusula). Eso básicamente significa: Haz lo que quieras siempre que los derechos de autor se queden.
Agregue termcolor.hpp (agarrarlo de include/termcolor/termcolor.hpp ) al proyecto y usar manipuladores de flujo desde el espacio de nombres termcolor .
También puede usar VCPKG para instalar la biblioteca:
$ vcpkg install termcolorO si está en MacOS, puede usar Homebrew para ese propósito:
$ brew install termcolorPara obtener información actualizada sobre los paquetes existentes, consulte la siguiente imagen:
Es muy fácil de usar. La idea se basa en los manipuladores de la corriente C ++. La aplicación típica de «Hello World» se ve así:
# 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 ;
}La aplicación anterior imprime una cadena usando diferentes colores. Sin embargo, hay una advertencia. No debe olvidar restablecer los colores, de lo contrario también se aplicarán a otras impresiones.
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;La versión correcta del código anterior debería verse así:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl; Por defecto, TermColor ignora cualquier color para transmisiones que no son TTY (por ejemplo std::stringstream ), por lo que el siguiente fragmento
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str(); Imprimirá «unicornio» usando color predeterminado, no rojo. Para cambiar este comportamiento, se puede usar termcolor::colorize Manipulator que hace cumplir los colores sin importar qué.
Los manipuladores se dividen en cuatro grupos:
Además, hay manipuladores de color para 16 colores, 256 colores y paletas de colores verdaderos.
Nota
Si bien termcolor admite el color verdadero, es necesario que el emulador terminal que usa para ejecutar su software también admite el color verdadero. Por lo tanto, asegúrese de que sea compatible antes de presentar un problema.
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> (La API de Windows no es compatible con estos manipuladores, excepto el underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(La API de Windows no es compatible con estos manipuladores)
termcolor::colorizetermcolor::nocolorize<windows.h> , el espacio de nombres global podría contaminarse con macros Min/Max. Si dicho efecto es deseable, considere usar #define NOMINMAX antes de #include <termcolor.hpp> .