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 :

modifier une chaine


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut modifier une chaine
    bonjour,

    je voudrais ajouter "= TRUE" a la fin de mon std::string et le mettre dans un CString

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const std::string var + "TRUE";
    //convertion en CString
    const CString cmd = ...
    merci

  2. #2
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    FAQ

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const std::string	cmd;
    cmd = nom_rep_TC + " = TRUE";
     
    std::string s(cmd);
    CString str(s.c_str());
    ceci n'est pas correct mais je sais pas comment faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd = nom_rep_TC + " = TRUE";
    pour la convertion je recupere cmd en CString dans quel variable.?

    merci

  4. #4
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Citation Envoyé par cortex59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const std::string	cmd;
    cmd = nom_rep_TC + " = TRUE";
     
    std::string s(cmd);
    CString str(s.c_str());
    Pas besoin de passer par l'intermédiaire s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const std::string	cmd;
    cmd = nom_rep_TC + " = TRUE";
     
    CString str(cmd.c_str());

  5. #5
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    donc dans "str" j'ai un std::string


    ceci ne fonctionne pas
    mess erreur
    binary '=' : no operator defined which takes a left-hand operand of type 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is
    no acceptable conversion)
    merci

  6. #6
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Citation Envoyé par cortex59 Voir le message
    donc dans "str" j'ai un std::string
    Non !!! str est initialisé par un const char* (la méthode c_str() de string retourne un const char*)

    Citation Envoyé par cortex59 Voir le message
    ceci ne fonctionne pas
    mess erreur


    merci
    var est de quel type?

    Edit:

    cmd ne doit pas être const puisque tu modifies sa valeur ... d'où l'erreur

    ou bien, l'initialiser au moment de la déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::string cmd = var + " = TRUE";

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par cortex59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const std::string	cmd;
    cmd = nom_rep_TC + " = TRUE";
    As-ton avis, tu crois que tu peux modifier une variable const ?

  8. #8
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    Et si je veut ajouter un entier dernier cette chaine?

    j'ai essayer ceci mais ca ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int num;
    cmd = nom_rep_TC  + " = " + num;
    est ce qu'il faut que je convertisse mon entier en std::string?
    si oui comment fait ton car je comprend pas trop dans le FAQ

    merci

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Le problème vient du fait que tu déclares cmd comme étant... une chaine constante ( const std::string cmd )

    Il est donc logique que tu ne puisse pas modifier cette chaine particulière, étant donné que tu as explicitement indiqué au compilateur que... tu ne voulais pas en permettre la modification

    Tu est donc obligé de passer par une chaine différente, qu'il ne faut surtout pas déclarer constante si tu veux y apporter des modifications

    Cela peut se faire sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::string temp(cmd); // utilisation du constructeur par copie
    temp+=" = true";
    CString str(temp.c_str());
    ou sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::string temp; // la chaine est vide par défaut
    temp = cmd + " = true";
    CString str(temp.c_str());
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Citation Envoyé par cortex59 Voir le message
    Et si je veut ajouter un entier dernier cette chaine?

    j'ai essayer ceci mais ca ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int num;
    cmd = nom_rep_TC  + " = " + num;
    est ce qu'il faut que je convertisse mon entier en std::string?
    si oui comment fait ton car je comprend pas trop dans le FAQ

    merci
    Dans la FAQ tu trouves également comment convertir un entier en chaîne en utilisant ostringstream.

    Tu as également la version boost plus simple boost::lexical_cast<T>

    Version

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

Discussions similaires

  1. Fonction qui modifie une chaine de caractère
    Par condor_01 dans le forum Débuter
    Réponses: 7
    Dernier message: 05/11/2007, 18h32
  2. Réponses: 1
    Dernier message: 10/04/2007, 23h29
  3. [VB.NET] Modifier une chaine de connextion
    Par hemipsy dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/12/2006, 12h38
  4. Modifier une chaine de caractères lue dans une DB
    Par shinryu69 dans le forum Langage
    Réponses: 4
    Dernier message: 31/10/2006, 13h40
  5. Modifier une chaine de caractères ?
    Par Arkadius dans le forum Oracle
    Réponses: 2
    Dernier message: 13/04/2006, 16h21

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