IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Changer couleur terminal


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Par défaut Changer couleur terminal
    Bonjour,

    j'ai fais quelques recherches sur ce forum mais je n'ai pas trouvé la solution à mon problème. Je dois faire un TP simulant le tirage du loto (d'une originalité...) et la prof voudrait que les couleurs aient des couleurs.

    J'aimerai donc savoir comment colorer une partie de texte sous le terminal de Linux. J'ai déjà trouvé une source avec un printf mais c'est du C ça et la prof va raler (comme chaque prof) si j'utilise du C dans un programme C++...

    Merci de vos réponses

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si le code n'utilise que des printf(), ce doit être qu'il écrit des séquences d'échappement pour le terminal, afin de changer sa couleur.

    Tu devrais essayer d'envoyer les mêmes séquences d'échappement sur std::cout dans ton programme C++...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    voici la liste des codes ainsi pour changer les couleurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    // Définition de quelques codes de couleurs
    // pour les terminaux ANSI :
    /*
    [0m			reset; clears all colors and styles (to white on black)
     
    [30m		set foreground color to black
    [31m		set foreground color to red
    [32m		set foreground color to green
    [33m		set foreground color to yellow
    [34m		set foreground color to blue
    [35m		set foreground color to magenta (purple)
    [36m		set foreground color to cyan
    [37m		set foreground color to white
    [39m		set foreground color to default (white)
    [40m		set background color to black
    [41m		set background color to red
    [42m		set background color to green
    [43m		set background color to yellow
    [44m		set background color to blue
    [45m		set background color to magenta (purple)
    [46m		set background color to cyan
    [47m		set background color to white
    [49m		set background color to default (black)
    */
    et voici une maniere pour faire un manipulateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ostream & black( ostream & os)
    {
    const char val[] = {033, '[', '3', '0', 'm'};
    os.write(val, sizeof(val));
    return os;
    }

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Rigolo. J'aime bien. Bon, c'est un chouilla plus compliqué pour faire des manipulateurs à argument genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ostream & foreground(ostream&os, color_type);
    // ce n'est évidement pas une signature acceptable pour écrire
     
    cout << foreground(red) << "toto" << foreground(normal);
    Au fait, question pour d'autres qui maitrisent mieux les flux que moi.
    Ici, on utilise write() plutôt qu'une chaine valant "\esc[30m" pour s'assurer que les opérateurs d'injection n'interprêtent rien, ou alors on se prend le choux pour rien ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Bonjour,


    pourquoi ne pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include<conio.h>
     
    void main()
    {
     ...
     ...
     ...
     textcolor(15) ;
     fprintf("coucou") ; 
    }

    certe, c'es du c, mais j'ai pas pu essayer "cout<<" j'ai pas linux.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    effectivement c'est certainement mieux de faire le manipulateur avec argument
    et tu as raison ca marche aussi avec juste un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<  "\e[32m"<<"Salut" <<endl;
    Kmaniche, outre que le code soit du C, il me semble que ce n'est pas portable
    la j'ai donné les codes couleurs de la norme ANSI.

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    @kmaniche
    1- Il n'y a rien de standard. Mais rien du tout.
    2- conio.h est propriétaire Borland. Le GCC de Dev-C++ vient avec une facilité de même interface. Dans tous les cas, sans la moindre applicabilité sous *nix
    3- Même la solution avec les caractères d'échappement présente des problèmes : la séquence default a un comportement qui varie d'un terminal à l'autre
    4- Les bibliothèques de la famille (n)curses/PDCurses sont ce qu'il doit y avoir de plus portable
    5- La solution avec les manipulateurs de flux a un côté "clean", et bien plus en thême avec ce forum que toutes les autres solutions qui auraient pu être données.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 06h54
  2. changer couleur element liste selectionné
    Par titicurio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/09/2005, 20h59
  3. changer couleur du lien au passage de la sourie
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/08/2005, 10h11
  4. [FLASH MX2004] Changer couleur de la ProgressBar ????
    Par Geilgestorm dans le forum Flash
    Réponses: 2
    Dernier message: 25/10/2004, 17h57
  5. changer couleur d'une "case" selon clique
    Par Jéjé2reims dans le forum MFC
    Réponses: 4
    Dernier message: 05/02/2004, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo