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 :

[débutant]travailler sur contenu string


Sujet :

SL & STL C++

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 3
    Points
    3
    Par défaut [débutant]travailler sur contenu string
    Je m'explique:

    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .
    .
    .
    string ma="bidule";
    string chin="chouette";
    string bidulechouette="truc";
    string tmp;
    .
    .
    .
    tmp=ma+chin;
    cout << tmp <<endl;
    ça fait
    bidulechouette

    mais moi je voudrais que cela affiche le contenu de bidulechouette c'est à dire "truc", comment faire?

    merci de votre aide


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    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 : 40
    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
    Ce n'est pas trivial a priori. Tu peux utiliser une solution à base de std::map :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <map>
     
    std::map<std::string, std::string> Map;
     
    std::string ma="bidule";
    std::string chin="chouette";
    Map[ma + chin] = "truc";
     
    std::string tmp = ma + chin;
    std::cout << Map[tmp] << std::endl;

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Je ne crois pas qu'il parlait des Maps de std;

    a mon avis juste faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << bidulechouette << endl;

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    en fait le probleme c'est que je ne sais pas à l'avance la valeur de la chaine bidulechouette, c'est l'utilisateur qui la rentre...

  5. #5
    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
    mtopoloff :
    si jai bien comprit, ce que serge veut faire c'est définir le nom dune variable a partir du contenu de deux autre variable deja existante

    enfin bon, je ne connias pas trop les MAP, mais le code de loulou me semble correspondre a ce que serge veut faire

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    en fait quand je fais tmp=ma+chin, il me renvoie une chaine de caractere la solution est donc de lui faire renvoyer un nom d'une chaine de caractere existante mais comment faire?

  7. #7
    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
    essaie la solution de loulou 24 ; je pense a vu de nez que ca correspond a ce que tu attend

  8. #8
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Non ça ne marchera pas parceque la chaine peut prendre plusieurs valeur et pas juste "truc", je vais prendre un autre exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    string pers1="jean louis"
    string pers2="jean pierre"
    string pers3="jean françois"
    string s="pers"
    int numpers
     
    //l'utilisateur rentre le numero de la personne
     
    s=s+numpers
    cout << s
    et là je me retrouve avec pers1 ou pers2 ou pers3
    mais moi je voudrai me retrouver avec jean louis ou jean pierre ou jean françois

    C'est plus clair :

  9. #9
    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 : 40
    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
    Contrairement à d'autres langages (PHP ?), en C++ on ne peut pas accéder à une variable en connaissant son "nom". Après compilation les noms de variables et autre ça n'existe plus, ce ne sont que des adresses. Donc une des solutions est d'utiliser une std::map pour faire correspondre un nom de variable à la variable en elle-même.

  10. #10
    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 : 40
    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
    4
    5
    6
    7
    8
    9
    10
    Map["pers1"]="jean louis"
    Map["pers2"]="jean pierre"
    Map["pers3"]="jean françois"
    string s="pers"
    int numpers
     
    //l'utilisateur rentre le numero de la personne
     
    s=s+boost::lexical_cast<std::string>(numpers);
    cout << Map[s]
    Je ne vois pas ce qui cloche avec cette méthode.

  11. #11
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Je ne connais pas du tout les map mais je pense avoir compris le principe... Dans ton cas ca donnerais :

    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
    #include <map> 
     
    std::map<std::string, std::string> Map; 
     
    Map["pers1"] = "jean louis" ;
    Map["pers2"] = "jean pierre" ;
    Map["pers3"] = "jean francois";
     
    string s="pers" 
    int numpers 
     
    //l'utilisateur rentre le numero de la personne 
     
    std::string tmp = s+numpers; 
    std::cout << Map[tmp] << std::endl;
    J'aime pas les épinards... Mais alors pas du tout

  12. #12
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    ah oui ok j'avais pas mis Map["pers"] ça marche merci

  13. #13
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Non Higestromm. Tu as réécrit a solution correcte de loulou24 en introduisant une erreur (chercher à convertions nombres <-> chaines)
    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...

  14. #14
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    En effet j'ai rédiger ca en speed et j'ai vraiment pas fais attention...

    Je ne voulais pas non plus recopier Loulou on a du poster a en meme temps
    J'aime pas les épinards... Mais alors pas du tout

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

Discussions similaires

  1. [Débutant] Travail sur jTabbedPane
    Par Caxton dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 15/11/2010, 12h21
  2. Travail sur des Strings
    Par Pingvince dans le forum Général Python
    Réponses: 16
    Dernier message: 25/12/2007, 04h22
  3. [VB 6.0]Travailler sur un String (découpage)
    Par t'djinn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/06/2006, 16h39
  4. [VB]Travailler sur un string
    Par Little-Freud dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 21/05/2006, 16h05
  5. Débutant travailler sur des images
    Par doud dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 15/08/2005, 15h47

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