Création
d'entreprise
Posez votre question Signaler

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

Z3uS-Su3Z 99Messages postés 30 mai 2005Date d'inscription - Dernière réponse le 16 mars 2010 à 18:12
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à :)
Lire la suite 

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

8 réponses
Réponse
+5
moins plus
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

Ajouter un commentaire
Réponse
+3
moins plus
de facon plus simple en c++, avec le cast const_char :)
exemple : const_cast<char*>(str.c_str())
Ylane - 26 févr. 2010 à 11:54
J'ai essayé le cast de titi et ça marche bien.

const_cast<char*>(str.c_str())
Ajouter un commentaire
Réponse
+2
moins plus
char* un;
string deux;
un = (char*)deux.c_str();

Ca doit fonctionner ça normalement.
Ajouter un commentaire
Réponse
+2
moins plus
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()
Healios - 26 févr. 2010 à 00:54
pour info la solution est de mettre simplement monString.c_str() et ça marche.
Masadow - 16 mars 2010 à 18:12
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é ;)
Ajouter un commentaire
Réponse
-2
moins plus
lol
Ajouter un commentaire
Ce document intitulé « [C/C++] Cast d'un string vers un char * » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?