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

Langage C++ Discussion :

[Langage] utiliser string/char comme valeur d'enumeration


Sujet :

Langage C++

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut [Langage] utiliser string/char comme valeur d'enumeration
    Salut tout le monde,

    Encore une question de conversion à vous poser...

    Je vous explique en gros. J'ai une méthode... laquelle requiert un paramètre de type "enumerated value"...

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    enum companies {
      microsoft,
      ibm,
      oracle
    };
    Mon problème intervient car je récupère une string d'un fichier XML... que je dois ensuite utiliser pour faire mon appel de méthode.

    Quelqu'un sait-il comment je peux passer de cette string à une "enumerated value"? car je n'ai rien trouvé de valable sur le net à ce sujet...

    Merci!!

    Olivier

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Typiquement, on joue avec une std::map<string,companies> ...
    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 averti
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut what's wrong with it?
    J'ai essayé avec une map... mais ça me renvoie une erreur que j'attendais... :'(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error	1	error C2440: 'initializing' : cannot convert from 'std::string' to 'Companies'	c:\documents and settings\obraeckm\desktop\enum\enumtest\enumtest.cpp	27
    Quest-ce que je fais de mauvais?

    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
     
    enum Companies {
    	MICROSOFT,
    	IBM,
    	ORACLE,
    	LINUX,
    	APPLE
    };
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
     
    	map<Companies,string>;
     
    	string test = "MICROSOFT";
     
    	Companies Company = test;
     
     
    	cout << "hello world!!";
    	getchar();
    }
    merci,

    Olivier

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    1. Si tu veux obtenir une Companies à partir d'une string, ta map est dans le mauvais sens.
    2. Tu n'as pas initialisé ta map.
    3. Tu n'utilises pas la map.
    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.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    La map s'initialise ainsi:
    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
    #include <string>
    using namespace std;
     
    enum Companies {
    	MICROSOFT,
    	IBM,
    	ORACLE,
    	LINUX,
    	APPLE,
     
    	Companies_MAX
    };
     
    char const *CompanyNames[] = {
    	"MICROSOFT",
    	"IBM",
    	"ORACLE",
    	"LINUX",
    	"APPLE"
    };
     
    int _tmain(int argc, _TCHAR* argv[])
    {	
    	map<string, Companies> laMap;
    	for(size_t i=0 ; i<Companies_MAX ; i++)
    	{
    		laMap.insert(pair<string, Company>( CompanyNames[i], static_cast<Companies>(i) ));
    	}
     
    	string test = "MICROSOFT";
    	Company company = laMap[test];
     
    	return 0;
    }
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2011, 15h42
  2. Réponses: 11
    Dernier message: 15/10/2009, 09h54
  3. [8] Utiliser séquence comme valeur par défaut
    Par after310 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/12/2008, 15h15
  4. Réponses: 8
    Dernier message: 06/11/2008, 08h35
  5. Réponses: 0
    Dernier message: 26/07/2007, 15h22

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