Como posso escrever texto colorido no console com C ++? Ou seja, como posso escrever um texto diferente com cores diferentes?
Como posso escrever texto colorido no console com C ++? Ou seja, como posso escrever um texto diferente com cores diferentes?
Respostas:
Adicione um pouco de cor ao texto do console
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// you can loop k higher to see more color choices
for(int k = 1; k < 255; k++)
{
// pick the colorattribute k you want
SetConsoleTextAttribute(hConsole, k);
cout << k << " I want to be nice today!" << endl;
}
Atributos de caracteres Aqui está como o valor "k" deve ser interpretado.
Name FG BG
Black 30 40
Red 31 41
Green 32 42
Yellow 33 43
Blue 34 44
Magenta 35 45
Cyan 36 46
White 37 47
Bright Black 90 100
Bright Red 91 101
Bright Green 92 102
Bright Yellow 93 103
Bright Blue 94 104
Bright Magenta 95 105
Bright Cyan 96 106
Bright White 97 107
#include <iostream>
#include <string>
int main(int argc, char ** argv){
printf("\n");
printf("\x1B[31mTexting\033[0m\t\t");
printf("\x1B[32mTexting\033[0m\t\t");
printf("\x1B[33mTexting\033[0m\t\t");
printf("\x1B[34mTexting\033[0m\t\t");
printf("\x1B[35mTexting\033[0m\n");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[37mTexting\033[0m\t\t");
printf("\x1B[93mTexting\033[0m\n");
printf("\033[3;42;30mTexting\033[0m\t\t");
printf("\033[3;43;30mTexting\033[0m\t\t");
printf("\033[3;44;30mTexting\033[0m\t\t");
printf("\033[3;104;30mTexting\033[0m\t\t");
printf("\033[3;100;30mTexting\033[0m\n");
printf("\033[3;47;35mTexting\033[0m\t\t");
printf("\033[2;47;35mTexting\033[0m\t\t");
printf("\033[1;47;35mTexting\033[0m\t\t");
printf("\t\t");
printf("\n");
return 0;
}
g++ cpp_interactive_terminal.cpp -o cpp_interactive_terminal.cgi
chmod +x cpp_interactive_terminal.cgi
./cpp_interactive_terminal.cgi
O C ++ padrão não tem noção de 'cores'. Portanto, o que você está perguntando depende do sistema operacional.
Para Windows, você pode verificar a função SetConsoleTextAttribute .
Em * nix, você deve usar as sequências de escape ANSI .
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int col=12;
// color your text in Windows console mode
// colors are 0=black 1=blue 2=green and so on to 15=white
// colorattribute = foreground + background * 16
// to get red text on yellow use 4 + 14*16 = 228
// light red on yellow would be 12 + 14*16 = 236
FlushConsoleInputBuffer(hConsole);
SetConsoleTextAttribute(hConsole, col);
cout << "Color Text";
SetConsoleTextAttribute(hConsole, 15); //set back to black background and white text
SetConsoleTextAttribute(hConsole, 15);
define a cor para Branco Brilhante , não para Branco . 7 - Branco. e 15 - Bright White
No Windows 10, você pode usar sequências de escape desta forma:
#ifdef _WIN32
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), ENABLE_VIRTUAL_TERMINAL_PROCESSING);
#endif
// print in red and restore colors default
std::cout << "\033[32m" << "Error!" << "\033[0m" << std::endl;
Supondo que você esteja falando sobre uma janela de console do Windows, consulte as funções do console na documentação da Biblioteca MSDN.
Caso contrário, ou mais geralmente, depende do console. As cores não são suportadas pela biblioteca C ++. Mas uma biblioteca para manipulação de console pode / irá suportar cores. Por exemplo, google "cores ncurses".
Para terminais seriais e emuladores de terminal conectados, você pode controlar as coisas emitindo "sequências de escape". Normalmente começam com ASCII 27 (o caractere de escape em ASCII). Existe um padrão ANSI e muitos esquemas personalizados.
A maneira mais simples de fazer é:
#include <stdlib.h>
system("Color F3");
Onde "F" é o código para a cor de fundo e 3 é o código para a cor do texto.
Mexa nele para ver outras combinações de cores:
system("Color 1A");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 3B");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 4c");
std::cout << "Hello, what is your name?" << std::endl;
Nota: Eu só testei no Windows. Trabalho.
Não tenho certeza do que você realmente deseja fazer, mas meu palpite é que você deseja que seu programa C ++ produza texto colorido no console, certo? Não sei sobre o Windows, mas em todos os Unices (incluindo Mac OS X), você simplesmente usaria sequências de escape ANSI para isso.
No Windows, você pode usar qualquer combinação de vermelho, verde e azul no primeiro plano (texto) e no plano de fundo.
/* you can use these constants
FOREGROUND_BLUE
FOREGROUND_GREEN
FOREGROUND_RED
FOREGROUND_INTENSITY
BACKGROUND_BLUE
BACKGROUND_GREEN
BACKGROUND_RED
BACKGROUND_INTENSITY
*/
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "I'm cyan! Who are you?" << std::endl;
Você não precisa usar nenhuma biblioteca. Basta escrever sistema ("cor 4f");
Não use "sistema (" Cor… ")" se não quiser que toda a tela seja preenchida com cores. Este é o script necessário para fazer o texto colorido:
#include <iostream>
#include <windows.h>
int main()
{
const WORD colors[] =
{
0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F,
0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6
};
HANDLE hstdin = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
WORD index = 0;
SetConsoleTextAttribute(hstdout, colors[index]);
std::cout << "Hello world" << std::endl;
FlushConsoleInputBuffer(hstdin);
return 0;
}
Aqui o exemplo cplusplus é um exemplo de como usar cores no console.