Comment puis-je écrire du texte coloré sur la console avec C ++? Autrement dit, comment puis-je écrire un texte différent avec des couleurs différentes?
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;}
Que faire si je veux ajouter plusieurs couleurs sur une seule ligne?.
Fadwa
2
@Misaki Je n'ai pas testé mais pouvez-vous essayer de supprimer le bit 'endl'?
Sheen
3
Quelle bibliothèque dois-je inclure pour connaître la classe HANDLE?
STF
2
comment le remettre par défaut?
Beyondo
31
Codes couleur d'échappement ANSI:
Name FG BG
Black3040Red3141Green3242Yellow3343Blue3444Magenta3545Cyan3646White3747BrightBlack90100BrightRed91101BrightGreen92102BrightYellow93103BrightBlue94104BrightMagenta95105BrightCyan96106BrightWhite97107
@Mehdi Mohammadpour J'ai Windows 10, et vos codes d'échappement sont travaillent pour moi, mais il me semble que vous avez le premier plan et les codes d'arrière - plan renversées. Pouvez-vous inverser les titres «FG» et «BG» s'il vous plaît?
yamex5
Je suis d'accord avec @ yamex5
smoothware
Salut yamex5 & smoothware, Merci, OK
Mehdi Mohammadpour
23
Le C ++ standard n'a aucune notion de «couleurs». Donc, ce que vous demandez dépend du système d'exploitation.
Notez que les séquences ASNI (ou du moins certaines d'entre elles) fonctionnent également sur CMD.EXE de Windows.
Fonder
3
@Asu, ce n'est pas le cas avant Win10 Anniversary Edition. Si votre Win10 est à jour, vous l'avez.
kayleeFrye_onDeck
7
Vous pouvez écrire des méthodes et appeler comme ça
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
Notez que SetConsoleTextAttribute(hConsole, 15);définit la couleur sur Blanc brillant et non sur Blanc . 7 - Blanc. et 15 - Bright White
GooDeeJaY
5
Sous Windows 10, vous pouvez utiliser les séquences d'échappement de cette façon:
#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;
En supposant que vous parlez d'une fenêtre de console Windows, recherchez les fonctions de la console dans la documentation MSDN Library.
Sinon, ou plus généralement, cela dépend de la console. Les couleurs ne sont pas prises en charge par la bibliothèque C ++. Mais une bibliothèque pour la gestion de la console peut / supportera les couleurs. Par exemple, google "ncurses colors".
Pour les terminaux série connectés et les émulateurs de terminaux, vous pouvez contrôler les choses en produisant des "séquences d'échappement". Ils commencent généralement par ASCII 27 (le caractère d'échappement en ASCII). Il existe une norme ANSI et de nombreux schémas personnalisés.
Depuis que cette réponse a été écrite, Windows 10 a pris en charge les séquences d'échappement ANSI pour les flux de console étroits.
Acclamations et hth. - Alf
3
Le moyen le plus simple est de:
#include<stdlib.h>
system("Color F3");
Où «F» est le code de la couleur d'arrière-plan et 3 est le code de la couleur du texte.
Jouez avec lui pour voir d'autres combinaisons de couleurs:
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;
C'est une mauvaise approche! Le code n'est pas multiplateforme, il ne fonctionnera pas dans les systèmes Linux
GooDeeJaY
2
Je ne suis pas sûr de ce que vous voulez vraiment faire, mais je suppose que vous voulez que votre programme C ++ affiche du texte en couleur dans la console, non? Je ne sais pas pour Windows, mais sur tous les Unices (y compris Mac OS X), vous utiliseriez simplement des séquences d'échappement ANSI pour cela.
Sous Windows, vous pouvez utiliser n'importe quelle combinaison de rouge vert et bleu au premier plan (texte) et en arrière-plan.
/* 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;
Ceci est uniquement Windows, et IIRC cela ne fera que rendre l'écran entier d'une seule couleur
nathanfranke
0
N'utilisez pas "système (" Couleur… ")" si vous ne voulez pas que tout l'écran soit rempli de couleur. Voici le script nécessaire pour créer du texte en couleur:
#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);return0;}
Réponses:
Ajoutez un peu de couleur au texte de votre console
Attributs de caractère Voici comment interpréter la valeur "k".
la source
Codes couleur d'échappement ANSI:
Exemple de code pour C / C ++:
GCC:
la source
Le C ++ standard n'a aucune notion de «couleurs». Donc, ce que vous demandez dépend du système d'exploitation.
Pour Windows, vous pouvez consulter la fonction SetConsoleTextAttribute .
Sur * nix, vous devez utiliser les séquences d'échappement ANSI .
la source
Vous pouvez écrire des méthodes et appeler comme ça
la source
SetConsoleTextAttribute(hConsole, 15);
définit la couleur sur Blanc brillant et non sur Blanc . 7 - Blanc. et 15 - Bright WhiteSous Windows 10, vous pouvez utiliser les séquences d'échappement de cette façon:
la source
En supposant que vous parlez d'une fenêtre de console Windows, recherchez les fonctions de la console dans la documentation MSDN Library.
Sinon, ou plus généralement, cela dépend de la console. Les couleurs ne sont pas prises en charge par la bibliothèque C ++. Mais une bibliothèque pour la gestion de la console peut / supportera les couleurs. Par exemple, google "ncurses colors".
Pour les terminaux série connectés et les émulateurs de terminaux, vous pouvez contrôler les choses en produisant des "séquences d'échappement". Ils commencent généralement par ASCII 27 (le caractère d'échappement en ASCII). Il existe une norme ANSI et de nombreux schémas personnalisés.
la source
Le moyen le plus simple est de:
Où «F» est le code de la couleur d'arrière-plan et 3 est le code de la couleur du texte.
Jouez avec lui pour voir d'autres combinaisons de couleurs:
Remarque: je n'ai testé que sur Windows. Travaux.
la source
Je ne suis pas sûr de ce que vous voulez vraiment faire, mais je suppose que vous voulez que votre programme C ++ affiche du texte en couleur dans la console, non? Je ne sais pas pour Windows, mais sur tous les Unices (y compris Mac OS X), vous utiliseriez simplement des séquences d'échappement ANSI pour cela.
la source
Sous Windows, vous pouvez utiliser n'importe quelle combinaison de rouge vert et bleu au premier plan (texte) et en arrière-plan.
Source: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes
la source
Vous n'avez pas besoin d'utiliser de bibliothèque. Ecrire uniquement le système ("color 4f");
la source
N'utilisez pas "système (" Couleur… ")" si vous ne voulez pas que tout l'écran soit rempli de couleur. Voici le script nécessaire pour créer du texte en couleur:
la source
Voici l' exemple cplusplus est un exemple d'utilisation des couleurs dans la console.
la source