HANDLE hConsole =GetStdHandle(STD_OUTPUT_HANDLE);// you can loop k higher to see more color choicesfor(int k =1; k <255; k++){// pick the colorattribute k you wantSetConsoleTextAttribute(hConsole, k);
cout << k <<" I want to be nice today!"<< endl;}
E se eu quiser adicionar várias cores em uma linha?
Fadwa de
2
@Misaki Eu não testei, mas você pode tentar remover a parte 'final'?
Sheen de
3
Que biblioteca preciso incluir para conhecer a classe HANDLE?
STF
2
como configurá-lo de volta ao padrão?
Beyondo
31
Códigos de cor de escape ANSI:
Name FG BG
Black3040Red3141Green3242Yellow3343Blue3444Magenta3545Cyan3646White3747BrightBlack90100BrightRed91101BrightGreen92102BrightYellow93103BrightBlue94104BrightMagenta95105BrightCyan96106BrightWhite97107
@Mehdi Mohammadpour Tenho o Windows 10 e seus códigos de escape estão funcionando para mim, mas me parece que você inverteu os códigos de primeiro e segundo plano. Você pode inverter os títulos 'FG' e 'BG', por favor?
yamex5 de
Eu tenho que concordar com o @ yamex5
smoothware
Olá yamex5 & smoothware, Obrigado, OK
Mehdi Mohammadpour
23
O C ++ padrão não tem noção de 'cores'. Portanto, o que você está perguntando depende do sistema operacional.
Observe que as sequências ASNI (ou pelo menos algumas delas) também funcionam no CMD.EXE do Windows.
Processo de Fundo Monica
3
@Asu, eles não fazem isso antes do Win10 Anniversary Edition. Se o seu Win10 estiver atualizado, você o tem.
kayleeFrye_onDeck
7
Você pode escrever métodos e chamar assim
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 = 236FlushConsoleInputBuffer(hConsole);SetConsoleTextAttribute(hConsole, col);
cout <<"Color Text";SetConsoleTextAttribute(hConsole,15);//set back to black background and white text
Observe que SetConsoleTextAttribute(hConsole, 15);define a cor para Branco Brilhante , não para Branco . 7 - Branco. e 15 - Bright White
GooDeeJaY
5
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.
Desde que essa resposta foi escrita, o Windows 10 ganhou suporte para sequências de escape ANSI para os fluxos de console estreitos.
Saúde e hth. - Alf
3
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;
Esta é uma abordagem ruim! O código não é multiplataforma, não funcionará em sistemas Linux
GooDeeJaY
2
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;
Respostas:
Adicione um pouco de cor ao texto do console
Atributos de caracteres Aqui está como o valor "k" deve ser interpretado.
fonte
Códigos de cor de escape ANSI:
Código de amostra para C / C ++:
GCC:
fonte
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 .
fonte
Você pode escrever métodos e chamar assim
fonte
SetConsoleTextAttribute(hConsole, 15);
define a cor para Branco Brilhante , não para Branco . 7 - Branco. e 15 - Bright WhiteNo Windows 10, você pode usar sequências de escape desta forma:
fonte
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.
fonte
A maneira mais simples de fazer é:
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:
Nota: Eu só testei no Windows. Trabalho.
fonte
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.
fonte
No Windows, você pode usar qualquer combinação de vermelho, verde e azul no primeiro plano (texto) e no plano de fundo.
Fonte: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes
fonte
Você não precisa usar nenhuma biblioteca. Basta escrever sistema ("cor 4f");
fonte
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:
fonte
Aqui o exemplo cplusplus é um exemplo de como usar cores no console.
fonte