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 :

Caster un char* en un enum


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Caster un char* en un enum
    Bonjour à tous,

    Je souhaite trouver un moyen pour caster un char* issu de la lecture d'un fichier en une valeur énumérée :

    on va dire que mon énumération est :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    enum couleur{
      BLEU,
      ROUGE,
      VERT
    };

    je lis un fichier avec un flux tout con :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    file >> (char*)coul;

    le problème est que je veux maintenant transformer la valeur lue (par exemple 'BLEU' en une des valeurs de l'énumération (pour la création d'un objet dont l'un des attributs est justement de type couleur

    Comment faire ??

    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Si j'ai bien compris le cour que j'ai lu sur les listes enum, il s'agit en fait de liste d'entier. Cela sert simplement à simplifier la gestion des codes état, c'est plus simple de gérer 'BLEU', 'JAUNE' plutot que '4' ou '5', ca à plus de sens pour nous mais le compilateur remplace ces valeurs par des nombres entier lors de la compilation (ce qui nous est transparent).

    Donc caster un entier en char* ca risque de ne pas être possible !

  3. #3
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    fait un tableau avec en indice la valeur de ton champ d'enum et en valeur tes char * ensuite il te suffit de faire une foncion de remplacement (par exemple avec un find sur un vector)
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    Un fois que le programme est compilé la chaine de caractère "BLEU" que tu utilise pour écrire le code source n'a pas de sens autre que la valeur 0 qu'il prend. Donc tu ne peux pas demander au programme de deviner que la chaine "BLEU" correspond à 0.

    Pour donner un sens à la chaine "BLEU" tu peux t'appuyer sur une table de correspondance entre chaine et valeur entière. Par exemple une table de hachage (par exemple std::map<std::string, int>) ou un vecteur (std::vector<std::string>) que tu renseigne explicitement à l'initialisation de ton programme.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    hmm c'est bien ce que je craignais, merci pour vos réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mapping enum vers char()
    Par jplnx dans le forum JPA
    Réponses: 3
    Dernier message: 16/01/2009, 14h20
  2. caster un int en char sur taille fixe
    Par devdebutantajax dans le forum Windows
    Réponses: 14
    Dernier message: 01/11/2008, 14h24
  3. Enum Vs Char[][]
    Par Titi41 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/10/2008, 17h08
  4. Réponses: 9
    Dernier message: 04/10/2007, 15h16
  5. caster une string en char*
    Par luta dans le forum C++
    Réponses: 5
    Dernier message: 20/01/2006, 02h36

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