
TermColor est une bibliothèque C ++ d'en-tête uniquement pour imprimer des messages colorés au terminal. Écrit juste pour le plaisir avec l'aide de la force. TermColor utilise la mise en forme des couleurs ANSI, vous pouvez donc l'utiliser sur chaque système utilisé de tels terminaux (la plupart des * systèmes Nix, y compris Linux et Mac OS).
Note
Sur Windows, l'API Windows est utilisée à la place des codes d'échappement, mais certaines limitations sont appliquées (tout n'est pas pris en charge). C'est pourquoi il est recommandé d'entrer le mode de traitement des terminaux virtuels et de définir la macro TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES pour tromper TermColor pour utiliser les codes couleur ANSI.
Il est licencié en vertu de la licence BSD (3 clause). Cela signifie essentiellement: faites ce que vous voulez tant que le droit d'auteur colle.
Ajoutez termcolor.hpp (saisissez-le de include/termcolor/termcolor.hpp ) au projet et utilisez des manipulateurs de flux de l'espace de noms termcolor .
Vous pouvez également utiliser VCPKG pour installer la bibliothèque:
$ vcpkg install termcolorOu si vous êtes sur macOS, vous pouvez utiliser Homebrew à cette fin:
$ brew install termcolorPour des informations à jour sur les packages existants, reportez-vous à l'image suivante:
C'est très facile à utiliser. L'idée est construite sur des manipulateurs de flux C ++. L'application «Hello World» typique ressemble à ceci:
# 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 ;
}L'application ci-dessus imprime une chaîne en utilisant différentes couleurs. Il y a cependant une mise en garde. Vous ne devez pas oublier de réinitialiser les couleurs, sinon ils seront également appliqués à d'autres impressions.
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;La version correcte du code ci-dessus devrait ressembler à ceci:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl; Par défaut, TermColor ignore toutes les couleurs pour les flux non-tty (par exemple std::stringstream ), donc l'extrait suivant
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str(); Imprimera «Unicorn» en utilisant la couleur par défaut, pas le rouge. Afin de modifier ce comportement, on peut utiliser termcolor::colorize manipulateur qui applique les couleurs quoi qu'il arrive.
Les manipulateurs sont divisés en quatre groupes:
De plus, il existe des manipulateurs de couleurs pour 16 couleurs, 256 couleurs et des palettes de vraies couleurs.
Note
Bien que termcolor prenne en charge la vraie couleur, il est nécessaire pour l'émulateur de terminal que vous utilisez pour exécuter votre logiciel pour prendre en charge la vraie couleur. Assurez-vous donc qu'il est pris en charge avant de déposer un problème.
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> (L'API Windows ne prend pas en charge ces manipulateurs sauf pour underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(L'API Windows ne prend pas en charge ces manipulateurs)
termcolor::colorizetermcolor::nocolorize<windows.h> , l'espace de noms global pourrait être pollué avec des macros min / max. Si un tel effet est souhaitable, veuillez envisager d'utiliser #define NOMINMAX avant #include <termcolor.hpp> .