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

SL & STL C++ Discussion :

Transformation d'un vector en int !


Sujet :

SL & STL C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut Transformation d'un vector en int !
    Bonjour,

    -Disons que dans un fichier header j'ai ceci:
    #define wxALL = 2
    #define wxEXPAND = 4
    #define wxTOP = 8

    -Dans un fichier .cpp j'ai un "vector<wxString> var" qui contient ceci:
    var[0] = "wxALL"
    var[1] = "wxTOP"

    La valeur de "var2" (int) doit être obtenu en fonction du vector "var", mais comment faire ?
    Dans mon exemple "var2" vaudrait: var2 = wxALL|wxTOP.

    Ai-je été clair ?

    Merci d'avance...

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Heu, perso, je n'ai pas tout comprit

    tu parle de var[2] ? ou d'un entier :
    int var2 ;

    Dans le 2éme cas, je ne comprend pas trop le
    var2 = wxALL|wxTOP
    Ca ne ressemble pas a un entier ca ;o)

    Dans le premier cas :

    var[2] += var[0] ;
    var[2] += var[1] ;

    Enfin si tu cherche a transformer un string en integer, la solution est certainement dans la FAQ .
    J'espére que ca t'aidera

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Clad3
    tu parle de var[2] ? ou d'un entier :
    int var2 ;
    -> Je parle de int var2;


    Citation Envoyé par Clad3
    var2 = wxALL|wxTOP;
    -> si c'est un entier...
    Donc comme je l'ait dit wxALL=2 et wxTOP=8
    Donc var2 vaut 10:
    00000010 : wxALL (2)
    00001000 : wxTOP (8)
    00001010 : var2 (10)

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    autant pour moi j'avais zappé les defines

  5. #5
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    cela te dit pas de faire une map qui associe un string à un entier
    car vu ce que le préprocesseur fait, je doute que tu arrives facilement à tes fins
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Un petit truc pour mieux vous faire comprendre:

    Si mon "vector<wxString> var" aurait toujours cette condition de vrai: var.size()==1 et bien il me suffirait de faire ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(var[0]=="wxALL"){
      var2=wxALL; //ou var2=2
    }else if(var[0]=="wxEXPAND"){
      var2=wxEXPAND;
    }else{
      var2=wxTOP;
    }
    Mais comme var.size() ne vaut pas toujours 1, il faudrait que je fasse un code du genre:
    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
    if(var.size()==1{
      if(var[0]=="wxALL"){
        var2=wxALL;
      }else if(var[0]=="wxEXPAND"){
        var2=wxEXPAND;
      }else{
        var2=wxTOP;
      }
    }else if(var.size()==2){
      if(var[0]=="wxALL" && var[0]=="wxEXPAND"){
        var2= wxALL|wxEXPAND;
      }else if(var[0]=="wxEXPAND" && var[0]=="wxTOP"){
        var2= wxEXPAND|wxTOP;
      }......
    }.....
    Ce qui me semble impensable quand il y a plus de 10 "#define wx????", possible.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Q'est ce que c'est une map en C++ ? As-tu un exemple ?

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    je ne suis pas sur qu'un grand nombre de define soit une solution adapté au probléme, enfin je peut me planter, mais je trouverai plutot un moyen de faire autrement si j'etait toi .

    Une map string/int me parait une bonne idée ; enfin tout dépend de comment tu récup tes donnée, et de ce que tu veut en faire

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Clad3 => Les défines sont définit dans la bibliothèque wxWidget (bibliothèque graphique) et donc je ne doit pas y toucher.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Est-ce que quelqu'un à un cours sur les map c++ ?

    Si j'ai bien compris il faudrais que je fasse un code qui ressemble à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Déclaration de la map<wxString, int> exem
    exem["wxALL"] = wxALL;
    exem["wxEXPAND"] = wxEXPAND;
    exem["wxTOP"] = wxTOP;
     
    int var2;
    if(var.size()==1){
      var2 = exem[var[0]];
    }else if(var.size()==2){
      var2 = exem[var[0]] | exem[var[1]];
    }else if(var.size()==3){
      var2 = exem[var[0]] | exem[var[1]] | exem[var[2]];
    }
    Y a-t-il moyen de faire un code plus propre en évitant tout ces "if/else" ?

  11. #11
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int var2=0;
    for (std::vector<wxString>::const_iterator b=var.begin(),e=var.end()
         ; b != e
         ; ++ b
        )
    {
        var2 |= exem[*b];
    }
    ?

    EDIT: mauvais type pour le vecteur, et mauvais nom de variable. "var" et "var2" ... quelle idée!!
    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...

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int var2 = 0;
    for (vector<wxString>::iterator i = var.begin(); i != var.end(); ++i)
        var2 |= exem[*i];

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Merci

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

Discussions similaires

  1. Transformation d'un String en Int
    Par titi1881 dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2010, 23h58
  2. Transformer simplement une chaine en INT
    Par alex2746 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/11/2009, 21h19
  3. Transformer une variable string en int
    Par Nikogram dans le forum C#
    Réponses: 4
    Dernier message: 18/10/2009, 20h47
  4. transformer un char(chiffre) en int
    Par coxinella dans le forum Général Java
    Réponses: 11
    Dernier message: 22/02/2008, 15h29
  5. Réponses: 3
    Dernier message: 23/02/2006, 09h37

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