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

Qt Discussion :

Conversion std::string QString


Sujet :

Qt

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut Conversion std::string QString
    Salut tout le monde,
    Je veux créer un QPixmap pour cela je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string toto;
    QPixmap *pm = new QPixmap(toto);
    et là mingw me sort que c'est pas possible de passer un string standard en paramètre. J'ai vu sur la toile que c'était peut-être dû au fait que je n'ai pas une version Qt compilée /paramétrée avec la STL. Je veux bien. Mais moi ma version de Qt je l'ai prise du site (version open source) pas plus tard qu'il y a trois jours et que je compte pas convertir toutes les strings de mon projet (déjà plutot conséquent) en QString !
    Quelqu'un aurait une explication/solution ?
    merci d'avance.
    --
    "Qui fait le malin tombe dans le ravin"

  2. #2
    Membre actif Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Points : 257
    Points
    257
    Par défaut
    a priori
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string toto;
    QPixmap *pm = new QPixmap(QString(toto.c_str()));

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut
    J'ai essayé déjà mais sans résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No matching function for call to `QString::QString(std::string)`
    au mieux j'ai un QString(const char*) a disposition mais c'est le const qui me gène.
    --
    "Qui fait le malin tombe dans le ravin"

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par krokmitaine
    J'ai essayé déjà mais sans résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No matching function for call to `QString::QString(std::string)`
    au mieux j'ai un QString(const char*) a disposition mais c'est le const qui me gène.
    Pourquoi ?

    En faisant comme te l'a précisé Rupella, ça doit marcher, le c_str() d'une std::string étant censé être constant.

    (Désolé de ne pas avoir testé, je ne suis pas chez moi, et ici, pas d'outils de programmation )
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut
    Pffff .... Désolé tout le monde, c'est moi qui avait mal mis mes parenthèses (il est temps que j'aille au lit moi ) ...
    Sinon oui effectivement il fallait bien passer par std::string.c_str().
    Merci tout le monde !!!
    --
    "Qui fait le malin tombe dans le ravin"

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    non, non, non, fais pas comme ça ! utilise la méthode statique fromStdString pour avoir la méthode la plus élégante et la moins spécifique.
    http://qt.developpez.com/doc/4.2/qstring/#fromstdstring

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 91
    Points
    91
    Par défaut
    Effectivement, ça m'a l'air plus propre comme ça.
    Merci pour le tuyau Miles
    --
    "Qui fait le malin tombe dans le ravin"

  8. #8
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    ou sinon en une commande :

    QString qsToto;
    qsToto.toStdString().c_str();
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par galak63
    ou sinon en une commande :

    QString qsToto;
    qsToto.toStdString().c_str();
    Pour faire quoi ?

  10. #10
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    et bien pour récupérer un char *
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par galak63
    et bien pour récupérer un char *
    Le but est de transformer un std::string en QString, et certains proposaient de passer par des char*.
    De plus, pour passer de QString à des const char*, mieux vaut directement utiliser toAscii.

  12. #12
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    désolé pour la compréhension du sujet final, par contre chacun ses gouts pour la conversion en char *
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par galak63
    désolé pour la compréhension du sujet final, par contre chacun ses gouts pour la conversion en char *
    Pourquoi ne pas utiliser les fonctions de QString faites pour ça et passer par une recopie ?

  14. #14
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par Miles
    Pourquoi ne pas utiliser les fonctions de QString faites pour ça et passer par une recopie ?
    toStdString().c_str() n'est pas une fonction de QString ?
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Non, c'est un appel à une fonction de QString qui retourne une std::string - recopie - puis un appel à c_str() de cette dernière, provoquant potentiellement une autre copie.

  16. #16
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    Ok d'ac !

    Il n'y a pas de petites économies
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

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

Discussions similaires

  1. conversion std:string to void*
    Par xoorus dans le forum C++
    Réponses: 5
    Dernier message: 27/07/2012, 22h18
  2. conversion std::string -> unsigned char*
    Par acheo dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2010, 17h35
  3. Conversion std::string vers numérique
    Par mister3957 dans le forum SL & STL
    Réponses: 9
    Dernier message: 26/02/2007, 20h40
  4. conversion std::string en std::istringstream
    Par flipper203 dans le forum SL & STL
    Réponses: 3
    Dernier message: 06/07/2006, 18h34
  5. conversions std::string <---> CString
    Par Rupella dans le forum MFC
    Réponses: 5
    Dernier message: 21/02/2006, 15h11

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