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

Messages postés
96
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
11 juin 2007
- - Dernière réponse :  Masadow - 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à :)
Afficher la suite 

5 réponses

Meilleure réponse
23
Merci
char* un;
string deux;
un = (char*)deux.c_str();

Ca doit fonctionner ça normalement.

Dire « Merci » 23

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57989 internautes nous ont dit merci ce mois-ci

Messages postés
489
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
156
12
Merci
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

7
Merci
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()
pour info la solution est de mettre simplement monString.c_str() et ça marche.
> 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é ;)
6
Merci
de facon plus simple en c++, avec le cast const_char :)
exemple : const_cast<char*>(str.c_str())
J'ai essayé le cast de titi et ça marche bien.

const_cast<char*>(str.c_str())
4
Merci
lol