[C/C++] Cast d'un string vers un char *

Résolu
Z3uS-Su3Z Messages postés 99 Date d'inscription   Statut Membre -  
 Masadow -
Salut à tous,

Question très simple je veux caster un std::string vers un char *, mais comment faire ?

Il y a bien string.c_str() qui me le cast en const char *, mais il me faut absolument un char *.

Voilà :)

5 réponses

  1. Nashouille
     
    char* un;
    string deux;
    un = (char*)deux.c_str();
    

    Ca doit fonctionner ça normalement.
    23
  2. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    salut

    en fait, on fait :
    char *un= deux.c_str();

    ce qui du même coup alloue un espace pour un, mais comme en
    réalité c'est l'espace mémoire de "deux"
    on est à la merci de la durée de vie de ce dernier, et en plus il va y avoir un problème entre char * et const char.

    le mieux c'est d'utiliser string. h et de faire
    strcpy(un, deux.c_str());

    après avoir alloué suffisament de mémoire pour char * un;

    char * un =(char *) malloc(taille_de_la chaine);

    et en fin de fonction :
    free(un);


    cordialement

    12
  3. titi
     
    de facon plus simple en c++, avec le cast const_char :)
    exemple : const_cast<char*>(str.c_str())
    7
    1. Ylane
       
      J'ai essayé le cast de titi et ça marche bien.

      const_cast<char*>(str.c_str())
      1
  4. Healios
     
    pour info le cast ne marche pas :\

    l'erreur :

    main.cpp:223: erreur: invalid const_cast from type ‘std::string’ to type ‘char*’

    apres avoir tapé:

    const_cast<char*>monString.c_str()
    7
    1. Healios
       
      pour info la solution est de mettre simplement monString.c_str() et ça marche.
      0
      1. Masadow > Healios
         
        Euh, il se trouve que c_str() renvoi un const char* donc écrire str.c_str ne te retournera surement pas un string. Ensuite pour la solution (char *)str.c_str, c'est un cast C-Style. La manière élégante de faire ce cast est bien const_char<char *>(str.c_str());

        Pour ta méthode, essaye de compiler :

        char* str1;

        str1 = str.c_str();

        Ton compilo te dira que const char* est différent de char*. S'il ne te le dit pas, c'est qu'il est très mal configuré ;)
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question