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 :

convertir un char * en std::string


Sujet :

SL & STL C++

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut convertir un char * en std::string
    bonjour je souhaite convertir un char * en std::string. Je vais voir dans la FAQ et je proc�de de la m�me mani�re :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    char * tempStr = NULL;
    tempStr = "test";
    std::string tempStdString(tempStr);
    � l'execution mon std::string est vide... Comment cela se fait ?

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    the Truth is somewhere else. *




    (*la V�rit� est ailleurs.)

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    euhh moi je dirais que ces lignes la

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    tempStr = "test";

    doivent etre transform�es en ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    strcpy(tempStr,"test");

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    Citation Envoy� par hiko-seijuro
    euhh moi je dirais que ces lignes la

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    tempStr = "test";
    doivent etre transform�es en ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    strcpy(tempStr,"test");
    beau plantage en perspective ...
    tempStr pointe sur rien ...
    tu recopies donc "test" sur une adresse null ,�a fera boum

  5. #5
    Membre �clair� Avatar de Seandest
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    54
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Doubs (Franche Comt�)

    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Par d�faut
    Citation Envoy� par hiko-seijuro
    euhh moi je dirais que ces lignes la

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    tempStr = "test";

    doivent etre transform�es en ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char * tempStr = NULL;
    strcpy(tempStr,"test");
    Hum ... faut pas faire une petite allocation m�moire avant le strcpy ?
    Dans ce genre l� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    char * tempStr = NULL;
    tempStr = new char[strlen("test") + 1];
    strcpy(tempStr,"test");

  6. #6
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par bigboomshakala
    the Truth is somewhere else. *




    (*la V�rit� est ailleurs.)
    je reformule : "le probl�me n'est pas l�, les 3 lignes de code donn�es sont correctes."

  7. #7
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    vi j'avais oubli� l'allocation dsl :s

  8. #8
    mat.M
    Invit�(e)
    Par d�faut
    qu'est ce que c'est que ces complications !
    ne pas chercher midi � 14heures
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    std::string str;
    char *szNullTerminatedString="Hello World";
    str="Hello World";
    Et c'est tout !

    Si tu veux utiliser plusieurs strings prendre std::vector ou std::list
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    std::vector <std::string> liste_string ;
    std::string str="MFC rulez";
    liste_string.push_back(str); 
    ///////
    for(int i=0;i<liste_string.size();i++)
    cout<<liste_string[i];

  9. #9
    Membre �prouv�

    Inscrit en
    Juin 2005
    Messages
    1 155
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par d�faut
    MAT.M dis:
    Code :
    std::string str;
    char *szNullTerminatedString="Hello World";
    str="Hello World";

    Et c'est tout !
    heu...y'a un prob doc moi je vois les choses plutot comme �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    std::string str;
    char *szNullTerminatedString;
    szNullTerminatedString=new char[stlen("Hello World")+1];
    strcpy(szNullTerminatedString,"Hello World");
    str=szNullTerminatedString;

  10. #10
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    std::string str;
    char *szNullTerminatedString;
    szNullTerminatedString=new char[stlen("Hello World")+1];
    strcpy(szNullTerminatedString,"Hello World");
    str=szNullTerminatedString;
    merci de poster des choses utiles. je ne vois pas l'int�r�t de polluer le forum avec des codes � 2 francs 6 sous

  11. #11
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Pour clarifier les choses...

    1- std::string poss�de un constructeur qui prend en param�tre un const char*, donc ceci est tout � fait valide.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::string Str = "Salut";
    2- Si vous voulez stocker la cha�ne dans un char* au pr�alable sans allouer de la m�moire, la seule syntaxe possible est la suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    const char* CStr = "Salut";
    std::string Str = CStr;
    Car "Salut" est une cha�ne litt�rale potentiellement dans une zone m�moire en lecture seule.

    3- Cette question n'a aucun rapport avec Visual C++ (sujet d�plac�)

  12. #12
    Membre �prouv�

    Inscrit en
    Juin 2005
    Messages
    1 155
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par d�faut
    bigboomshakala dis:
    merci de poster des choses utiles. je ne vois pas l'int�r�t de polluer le forum avec des codes � 2 francs 6 sous
    ressures moi, entre
    et
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    char* c;
    c=new char [strlen("dynamique")+1];
    strcpy(c,"dynamique");
    il y'a une difference???

  13. #13
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Oui.

    Le premier est incorrect (m�me si �a peut fonctionner), le second est inutilement compliqu�.

Discussions similaires

  1. Conversion const char* vers std::string
    Par scheme dans le forum C++
    R�ponses: 4
    Dernier message: 21/09/2010, 11h02
  2. Convertir un char[] en une String
    Par Adorien dans le forum Langage
    R�ponses: 3
    Dernier message: 08/04/2010, 12h05
  3. convertir un CString en std::string
    Par azamharir dans le forum MFC
    R�ponses: 1
    Dernier message: 04/04/2008, 08h36
  4. Probl�me Cast char* en std::string
    Par inovah dans le forum SL & STL
    R�ponses: 1
    Dernier message: 30/10/2007, 16h32
  5. convertir un char* en std::basic_string
    Par gronaze dans le forum SL & STL
    R�ponses: 8
    Dernier message: 30/06/2006, 15h17

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