[c++] Couleurs de la console

Résolu
Bonjour tout le monde!!

Malgré les multiples conseils que j'ai vus sur ce site, je ne comprends toujours pas comment mettre dans mon programme en C++ un fond bleu clair et des lettres rouges!!

Quelqu'un pourrait m'expliquer plus en détail??

Merci parce que là...je suis paumé!!

Je suis en train de créer un programme d'électrotechnique qui permet de calculer automatiquement les formules!!

Merci d'avance!

Bonne Année!!
Configuration: Windows XP
Firefox 2.0.0.1

Mais je vais bientôt avoir:

Fedora Core 5
Firefox 2.0.0.1

16 réponses

Résumé de la discussion

Plusieurs contributions expliquent comment afficher un fond bleu clair et des lettres rouges en C++ sur Windows, en utilisant la commande système color ou des bibliothèques pour plus de portabilité. Des réponses préconisent system("color 1d"); pour changer le texte et l'arrière-plan, avec des correspondances hexadécimales et des exemples tandis que d'autres recommandent d'éviter system et d'utiliser conio2.h ou API graphique. Certains soulignent la portabilité limitée et la dépendance à l'OS, évoquant Linux et Cygwin, tandis que d'autres rappellent que les solutions spécifiques à Windows restent suffisamment pragmatiques en pratique. En cas de besoin, des échanges suggèrent d'explorer les options d'API graphiques ou des séquences d'échappement selon le shell, afin d'obtenir des couleurs compatibles avec environnements sans dépendance à system.

Bobot (l’IA à votre service)
  1. salut la couleur en mode console rien de plus simple on peu changer en meme temps la couleur du texte que celle du background de la console avec la fonction
    system("color £#) où £ represente la couleur du texte et # la couleur de fond de la console voici les differentes correspondances pour les couleurs :
    0 = Noir B=Cyan
    1 = bleu foncé C=rouge
    2 = vert D=rose
    3 = bleu-gris E=jaune
    4 = Marron F=blanc
    5 = pourpre
    6 = kaki
    7 = gris clair
    8 = Gris
    9 = Bleu-clair
    A = vert-clair

    EXEMPLE D'APPLICATION: ecrire C++ qui affiche BONJOUR FORUM COMMENTCAMARCHE en bleu dans une console de couleur rose

    RESOLUTION DE L'EXEMPLE D'APPLICATION:

    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    int main()
    {
    system("color 1d");
    cout<<"BONJOUR FORUM COMMENTCAMARCHE"<<endl;
    return 0;
    }

    J'espere que ceci vous aidera!
    amitié------fraternité-----respect
    esprit de recherche et d'innovation
    4
    1. Contributeur
      Tu mélanges le c++ et le c. Et sous windows il vaut mieux utiliser l'api que la fonction system.
      0
    2. merci
      0
    3. Meci!!!
      0
    4. mercii bcp
      0
  2. Modérateur
    Euh comment ça ?
    C'est un programme qui se lance dans une fenêtre et tu voudrais changer des couleurs ? Ou il se lance dans une console ?
    0
    1. oui c'est un programme en mode console car je ne sais encore faire le mode fenêtre!!

      sais-tu comment faire??
      0
      1. Modérateur
        A priori il faut utiliser la librairie ncurses.

        bonne chance
        0
        1. ncurse fonctionne très bien et est très facile à utiliser. ncurse t'offre d'autres passibilités comme redimensionner la console, créer des cadres, écrire à des coordonnées spécifiques...
          Il y a aussi termios, mais je n'a jamais essayé.
          0
      2. Modérateur
        Oui mais a priori ca va dépendre de ton shell. Typiquement la tu donns les séquences d'échappement en bash (sous linux) alors qu'astrofan veut faire ça sous windows. L'avantage c'est qu'en ncurses tu dois pouvoir être indépendant du type du shell et au moins de l'OS. Et pourtant si tu installes cygwin on voit qu'il est possible d'avoir des couleurs dans la fenêtre "commandes msdos" ! Mais rien ne dit que ce sont les mêmes séquences d'échappement.

        Bonne chance
        0
        1. Modérateur
          Ah oui tu as raison, j'avais pas pris en compte la portabilité...
          0
      3. Modérateur
        Pas de soucis :-)
        0
        1. Salut
          Voici un morceau de code qui résoudra le probleme de couleur
          #include<widows.h>
          #include<stdio.h>
          int main()
          {
          HANDLE manip_console=GETSTDHANDLE(STD_OUTPUT_HANDLE);
          int couleur1,couleur2;
          SetConsoleTextAttribute(manip_console,couleur1|couleur2);
          printf("Un texte d'essai\n ");
          return 0;
          }
          et le tour est joué
          bon couleur1 et couleur 2 c'est pour le fond et le texte

          ou bien t'as qu'à ,telecharger econio.h et econio.cpp
          Ciao
          0
          1. Modérateur
            Sauf que ça ne marchera que sous windows ;)
            0
            1. Et Windows, c'est mal.
              0
            2. ça c'est vrai. (linux powaa)
              0
            3. Et windows c'est très bien fait, et ça constitue la large majorité des ordinateurs.
              0
            4. Modérateur
              Sauf que ce n'est pas la question. Quand on peut faire un truc qui marche partout et un truc qui marche à certains endroit à coût équivalent, pourquoi ne pas choisir l'approche universelle ?
              0
          2. Bonjours, tu n'a qu'a regarder ici https://openclassrooms.com/fr/courses c'est en c mais c'est facilement adaptable.
            0
            1. lien mort. dommage c'était un bon tuto
              0
            2. Modérateur
              Effectivement il ne reste que la partie linux :
              http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html

              ... raison de plus pour passer par une librairie ;-)
              0
            3. Pourquoi, il à supprimé le lien???
              J'en ai besoin!
              0
          3. Modérateur
            Outre le fait qu'on a dit que conio ne permettait pas d'avoir un programme portable (qui fonctionne sous windows, linux...) contrairement à un programme basé sur la librairie ncurses, ce programme comporte un certain nombre de fautes (dont l'inclusion #include <windows.h>).
            https://en.wikipedia.org/wiki/Ncurses

            Donc merci de prendre 2 minutes la prochaine fois pour lire ce qui a été écrit auparavant.
            -1
            1. afin de mettre un fond bleu et des lettres rouges il faut inclure conio2.h
              tools->check for updates/packages
              tu met le devpack server a devpacks.org ...
              tu verras une liste de librairies apparaitre
              tu trouveras un conio tu le telecharge

              puis dans ton projet tu ajoute les linkers
              project options -> parametres
              -conio2
              ../lib/libconio.a

              j'ai deja essayé et ça marche ;)
              2
              1. Contributeur
                Oui, on n'en doute pas que ça marche.
                Mais on a dit que conio, ce n'est pas portable !!!

                Il vaut donc mieux utiliser Ncurses.
                0
              2. Modérateur
                Merci fiddy tu m'ôtes les mots de la bouche :-)
                0
              3. ###########EH REGARDE ICI##########
                Utilise la fonction system(color ##), et a la place des diézes tu entre un caractere de cette liste
                0=noir 1=bleu foncé 2=vert 3=bleu gris 4=marron 5=pourpre 6=kaki 7=gris claire 8=gris 9=bleu claire B=cyan C=rouge D=rose E=jaune F=blanc

                le premier chiffre correspond a l'arriére plan (exemple: system(color F#); le fond est blanc) et le second chiffre correspond au texte donc system (color E2); il y aura un fond jaune et du texte vert ATTENTION ne pas mettre de virgule entre les 2 argument et ne pas oublier le point virgule

                ALLER BY ^^
                0
              4. Contributeur
                @MY,
                Pas besoin de mettre des dièses pour mettre en évidence ton commentaire...
                De plus, system est une fonction à éviter pour deux raisons : fonction pas efficace, on préférera utiliser une API (déjà évoquée dans un post ci-dessus), et ta méthode n'est pas portable : il vaut mieux utiliser une bibliothèque (également déjà évoquée).
                Cdlt,
                0
            2. Modérateur
              J'aime pas trop déterrer les vieux sujets, mais lorsque je fais des recherches sur Ncurses, le système supporté est POSIX, alors comment l'utiliser sous Windows ?

              Note : moi je voudrais juste changer la couleur du texte et du fond d'écran de la console dans un projet C++/OpenGL/GLUT, de préférence portable, mais au minimum Windows.
              0
              1. Bonjour j'ai lu toutes vos réponses mais beaucoup de vos liens sont morts ( je sais j'arrive tard après la bataille ) j'ai le même soucis sous windows j'aimerais changer la couleur du texte dans la console mais seulement partiellement , juste sur quelques mots qui doivent s'afficher en bleu, savez vous comment faire ?
                Avec vos conseils j'ai réussi à afficher tout le terminal en bleu, mais pas juste les mots qui m'intéressaient:/
                merci d'avance
                0
                1. Contributeur
                  Le lien pour pdcurses n'est pas mort.
                  De plus, il y a un post qui donne un bout de code sans lien (post #8).

                  Je t'invite donc à relire tout le fil, et tu trouveras la réponses à tes questions. N'hésite pas à ouvrir un nouveau post si tu n'y arrives pas.
                  0
                2. @fiddyj'ai bien relu tout le fil , mais je ne vois pas de conseil permettant de mettre en couleur seulement une partie du terminal et non le terminal en entier , j'ai vraiment besoin d'afficher seulement une partie d'une chaine de caractère en bleu et non toute la console, si vous savez faire ça ou si vous connaissez un bon tutoriel je suis preneuse !
                  merci beaucoup
                  0
                3. Contributeur
                  @morganeEt ça, ça ne te convient pas : https://openclassrooms.com/courses/des-couleurs-dans-la-console-linux ?
                  0
                4. non parce que déjà c'est en c et que je n'ai aucune connaissance de ce langage pour le traduire et le tuto pour Windows de cette page est mort et je cherche les deux versions, celle linux et celle Windows (car actuellement je code sous Windows mais le programme final doit tourner sous linux ).
                  J'ai regardé ce lien, quand je dis que j'ai tout lu je ne mens pas , pas besoin d'être agressif, j'ai un soucis , je demande de l'aide et si personne ne peut m'aider ici ce n'est pas grave, je demanderai ailleurs :)
                  0
                5. Contributeur
                  Ce n'était pas un ton agressif, rassure-toi ;-).

                  Sinon, oui le post était en C. Pour le C++, tu as juste à remplacer printf("...") par std::cout << "..."; et remplacer stdio.h par iostream.

                  Dans ton cas (portabilité sur windows et GNU/Linux), le seul moyen est l'utilisation d'une bibliothèque tierce. Ncurses par exemple. Un tuto : https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
                  Note : il me semble un peu vieux le tuto. Mais en même temps, c'est pas tout neuf cette bibliothèque. Si tu veux plus de modernité, il faudra passer sur une bibliothèque à fenêtre comme Qt, GTK2+.
                  0
              2. Voici mon code sur code::block en c++ profiter bien :D

                #include <iostream>
                #include <stdlib.h>
                using namespace std;

                int main()
                {
                system("COLOR 1");
                cout << "Bonjour Mon ptit vieux" << endl;
                system("COLOR 2");
                cout << "comment sava ?" << endl;
                system("COLOR 3");
                cout << "j'ai enfin reussi a mettre le texte en couleur!" << endl;
                system("COLOR 4");
                cout << "c'est une grande chose ? non ?" << endl;
                system("COLOR 5");
                cout << "aller travaille bien Michou" << endl;
                system("COLOR 6");
                cout << "bye" << endl;
                system("COLOR 7");
                cout << "bye" << endl;
                system("COLOR FC");
                cout << "bye" << endl;
                return 0;
                }
                -3
                1. Contributeur
                  system("...") est déconseillé... Cf. le fil.
                  0