[C/C++] Cast d'un string vers un char *
Résolu
Z3uS-Su3Z
Messages postés
94
Date d'inscription
Statut
Membre
Dernière intervention
-
Masadow -
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à :)
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à :)
A voir également:
- Convertir string en char
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir kindle en epub - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Convertir audio en texte word - Guide
5 réponses
salut
en fait, on fait :
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
après avoir alloué suffisament de mémoire pour char * un;
et en fin de fonction :
cordialement
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
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()
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()
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é ;)
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é ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question