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 :

convert enum to string c++


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 1
    Points : 3
    Points
    3
    Par défaut convert enum to string c++
    Pouvez-vous m'aider, j'ai essayé de utiliser ce code mais je trouve quelque de problème au niveau de compilation précisément dans ce ligne SMARTENUM_DEFINE_GET_VALUE_FROM_STRING(Animal, animalName); . voila le code et merci.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <iostream>
    #include <cstring>
    #include <string>
     
    #define SMARTENUM_VALUE(typeName, value) e##typeName##_##value, 
    #define SMARTENUM_STRING(typeName, value) #value, 
     
    #define SMARTENUM_DEFINE_ENUM(typeName, values) enum typeName { values(SMARTENUM_VALUE) e##typeName##_Count };
     
    #define SMARTENUM_DEFINE_NAMES(typeName, values) const char* typeName##Array [] = { values(SMARTENUM_STRING) };
     
    #define SMARTENUM_DEFINE_GET_VALUE_FROM_STRING(typeName, name)	\
    typeName get##typeName##FromString(const char* str) \
    {	\
    for (int i = 0; i < e##typeName##_Count; ++i) { \
    if (!strcmp(##typeName##Array[i], str))	{	\
    return (##typeName##)i;	}	\
    return e##typeName##_Count;	}	\
    }
     
    #define getStringFromEnumValue(typeName, value) typeName##Array[##value]
    #define getEnumValueFromString(typeName, name)	get##typeName##FromString(##name)
     
     
    #define ANIMAL_LIST(m) \
    m(Animal, Dog) \
    m(Animal, Cat) \
    m(Animal, Cow)
     
    #define CAR_LIST(m) \
    m(Car, Fiat) \
    m(Car, Ford) \
    m(Car, Audi)
    int main()
    {
     
     
    SMARTENUM_DEFINE_ENUM(Animal, ANIMAL_LIST);
    SMARTENUM_DEFINE_NAMES(Animal, ANIMAL_LIST);
    const char* animalName = getStringFromEnumValue(Animal, eAnimal_Cow);
    std::cout << animalName << std::endl;
    SMARTENUM_DEFINE_GET_VALUE_FROM_STRING(Animal, animalName);
    Animal animal = getEnumValueFromString(Animal, animalName);
    system("pause");
    return 0;
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Je vais même pas chercher à comprendre cette ignominie tout droit sortie des années 70s.
    Qu'un compilateur récent t'envoie bouler avec ces cochonneries de MACRO des enfers, c'est la moindre des choses.

    C'est quoi ton vrai besoin ?

    Non, parce que la traduction d'un enum en une chaine de caractère sans tenir compte de la langue de l'utilisateur, c'était bien gentil sous un PDP-11, mais c'était il y a près de 50 ans.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. [C#] Comment convertir string en DateTime ?
    Par fagos dans le forum C#
    Réponses: 17
    Dernier message: 13/06/2013, 11h42
  2. Convertir string en Tstrings ?
    Par Sunseeker69 dans le forum Delphi
    Réponses: 3
    Dernier message: 16/05/2006, 10h27
  3. Réponses: 6
    Dernier message: 16/01/2006, 20h33
  4. Convertir String en Char: comment?
    Par nmathon dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2005, 20h58
  5. [C#] Fonction pour convertir string[] vers ArrayList
    Par luimême dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2005, 13h25

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