
O TermColor é uma biblioteca C ++ somente para a impressão de mensagens coloridas no terminal. Escrito apenas para se divertir com a ajuda da força. O TermColor usa a formatação de cores ANSI, para que você possa usá -lo em todos os sistemas que sejam usados esses terminais (a maioria dos sistemas *nix, incluindo Linux e Mac OS).
Observação
No Windows, a API do Windows é usada em vez de códigos de fuga, mas algumas limitações são aplicadas (nem tudo é suportado). É por isso que é recomendável entrar no modo de processamento do terminal virtual e definir TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES macro para enganar o TermColor para usar os códigos de cores ANSI.
É licenciado sob a licença BSD (3-cláusulas). Isso basicamente significa: faça o que quiser, desde que os direitos autorais permaneçam por aí.
Adicione termcolor.hpp (pegue -o de include/termcolor/termcolor.hpp ) ao projeto e use manipuladores de fluxo do espaço para nome termcolor .
Você também pode usar o VCPKG para instalar a biblioteca:
$ vcpkg install termcolorOu se você estiver no macOS, pode usar o homebrew para esse fim:
$ brew install termcolorPara obter informações atualizadas sobre os pacotes existentes, consulte a figura a seguir:
É muito fácil de usar. A idéia é construída sobre manipuladores de fluxo C ++. Típico «Hello World Application se parece com o seguinte:
# 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 ;
}O aplicativo acima imprime uma string usando cores diferentes. Há uma ressalva. Você não deve esquecer de redefinir as cores, caso contrário elas serão aplicadas a outras impressões também.
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;A versão correta do código acima deve ficar assim:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl; std::stringstream padrão, o TermColor ignora qualquer cor para fluxos que não
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str(); Imprimirá «unicórnio» usando a cor padrão, não vermelha. Para alterar esse comportamento, pode -se usar o Manipulador termcolor::colorize que aplique cores, não importa o quê.
Os manipuladores são divididos em quatro grupos:
Além disso, existem manipuladores de cores para 16 cores, 256 cores e paletas de cores verdadeiras.
Observação
Enquanto termcolor suporta a verdadeira cor, é necessário para o emulador de terminal que você usa para executar seu software para oferecer suporte à verdadeira cor. Portanto, verifique se ele é suportado antes de apresentar um 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> (A API do Windows não suporta esses manipuladores, exceto para underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(API do Windows não suporta esses manipuladores)
termcolor::colorizetermcolor::nocolorize<windows.h> , o espaço para nome global pode ser poluído com macros min/max. Se esse efeito for desejável, considere usar #define NOMINMAX antes #include <termcolor.hpp> .