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 :

Conversion const char* vers std::string


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut Conversion const char* vers std::string
    Bonjour à tous

    J'ai le "classique" problème du passage d'une chaîne en const char* vers std::string.

    J'utilise un framework privé, pour lire une ligne d'un fichier de configuration, qui me renvoie le const char. J'essaie ensuite de l'affecter à une string. Ca donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string repertoire = GET_CONFIG_STRING("ControllerObservation.REPERTOIRE_CUR");
    Ca compile, et je pensais que c'était bon. Ensuite j'essaie de passer repertoire en paramètre d'une classe, qui prend une string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Directory dir(repertoire);
    Et la je me fais jeter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined reference to `Directory::Directory(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
    C'est comme si ma string n'en était pas vraiment une... Quand je passe mon curseur dessus: il m'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef basic_string<char> string;
    Avez-vous une idée de comment procéder ? Je m'arrache les cheveux :'(

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    L'erreur est explicite, le lieur ne trouve pas la définition de
    Directory :: Directory(std::basic_string<char, std::char_traits<char>, std::allocator<char>>)

  3. #3
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Quelle est la signature de du constructeur du(des ?) constructeurs de Directory ? Sinon, pour le coup du typedef, c'est normal, std::string est ainsi définie.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Directory dir(repertoire.c_str());

    on prenant soin de vérifier que le const char* n'est pas stocké en interne car sa durée de vie est limitée

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Merci à tous d'avoir répondu, en fait l'erreur venait de mon Makefile, j'avais mal inclus Directory. J'ai cherché pendant longtemps au mauvais endroit^^

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

Discussions similaires

  1. conversion const char* en string
    Par nahoula1231 dans le forum C++
    Réponses: 4
    Dernier message: 27/02/2013, 19h50
  2. Conversion de char vers const char
    Par Lucas Panny dans le forum Visual C++
    Réponses: 9
    Dernier message: 01/09/2008, 16h36
  3. char * vers std::wstring
    Par chronos dans le forum SL & STL
    Réponses: 7
    Dernier message: 12/09/2007, 09h44
  4. pb conversion unsigned char vers char *
    Par FamiDoo dans le forum C
    Réponses: 11
    Dernier message: 24/08/2006, 18h11
  5. convertir un char * en std::string
    Par benahpets dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/05/2006, 17h15

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