Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : const char * vers char * [ Divers / Débutant(e) ] (nord666)

mardi 13 mai 2008 à 01:31:11 | const char * vers char *

nord666

Salut,

Je doit transformer un constchar * en char *. J'ai trouver sur internet: const_cast<char *>, mais je ne réussit pas à obtenir la variable sans le const

Je veux quelque chose du genre


ostringstream o;
//Assignation de valeur à o ici
//...
//

char * temp = const_cast<char *>(o.str().c_st());


Merci à tous!

mardi 13 mai 2008 à 01:41:04 | Re : const char * vers char *

SAKingdom

Membre Club
Dans ton cas:
char * temp = (char*)(o.str().c_str());

C++ (@++)


mardi 13 mai 2008 à 01:54:13 | Re : const char * vers char *

nord666

Enregistre "".

J'ai essayé avec une variable temporaire:

string strTemp = o.str();
char * temp = (char *)strTemp.c_str());

Et ça marche.

Mais j'ai un autre problème!

J'utilise la library vector

for (int i = 0; i < num_joysticks; ++i)
{
ostringstream o;
o <<
"Joystick #" << i;
string strTemp = o.str();
controllersName.push_back((
char *)strTemp.c_str());
}

Je met un breakpoint à la ligne du   push_back.
Je fais F10 pour aller une ligne plus loin.
Je regarde le contenu de controllersName.
Il y a "Joystick #0". C'est normal.
Là je fais F10 à nouveau, il va sur la ligne  for(int i...  et le contenu de controllersName qui était "Joystick #0" est devenu "".
controllersName est déclaré comme suit juste après ma liste d'include

vector<

char *> controllersName;

Une idée de solution?

mardi 13 mai 2008 à 22:05:06 | Re : const char * vers char *

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
strTemp est locale, donc quand tu sors de ton for, la valeur retournée par c_str() n'est plus valide (la mémoire a été vraisemblablement libérée dans le destructeur de la chaine).
De toutes facons, quand tu commences à caster un const char* en char* c'est que tu joues avec le feu et tu va vers les ennuis. Ici il faut à un moment donnée allouer de la mémoire dans laquelle tu mettras tes chaines. Le plus simple dans ton cas c'est d'utiliser un vector<string> et non un vector<char*>

_____________________________________
Un éditeur de ressources gratuit pour Windows


mercredi 14 mai 2008 à 05:04:35 | Re : const char * vers char *

nord666

Réponse acceptée !
je doit obligatoirement pouvoir obtenir un  char *.

le problème de la boucle est que la classe vector a besoin de fonctions dans le template utilisé pour bien fonctionner. Char * n'a pas ces fonctions. Résultat: Un bug.

Donc, pour résoudre mon problème je fait un vector<string>
et j'obtiens un char * en fesant    char * temp = (char *)controllersName[compteur].c_str();

Et ça marche!!

mercredi 14 mai 2008 à 18:38:13 | Re : const char * vers char *

vecchio56

Administrateur CodeS-SourceS
Tu devrais quand même te demander pourquoi tu as besoin d'un char* et non d'un const char*. Si tu as besoin d'un char*, ca veut dire que la chaine peut être modifiée. Or la valeur retournée par c_str() ne doit pas être modifiée.

_____________________________________
Un éditeur de ressources gratuit pour Windows




Cette discussion est classé dans : const, char


Répondre à ce message

Sujets en rapport avec ce message

const char * => char * [ par Xs ] salut !!je galere grave dand beaucoup de mes programmes a causes de quelqes trucs :const char * => char *char * => charchar => char *eventuellement ch Concatenation [ par UnExPeCtEdSpy ] B'jour vousBon c'est tout bête je voudrais concaténer deux chaine de caractére, alors j'essaye avec :char *strcat( char *strDestination, const char *s Crash a l'execution mais non en mode de debuggage [ par cybermatthieu ] La si je roule le programme avec le mode de debugage tout fonctionne a merveille il termine l'execution normalement. Mais si je roule le programme ( s Manip' des variables du type char... [ par DJeS ] J'ai d'eternels problemes pour manipuler les variables char, const char etc...quand je veux faire passer un argument char a un fonction j'ai souvent d RegOpenKeyEx [ par guitoulefoux ] Bonjour,Pourriez vous m'aider a corriger mon erreur.Voici mon bout de code :TCHAR MenDema[1024];[...]HKEY hKey;RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWA MessageBox - Const Char - Concversion ASCII [ par guitoulefoux ] Bonjour,J'ai encore besoin de vos lumieres (et ca sera pas la derniére)1- j'utilise une boucle pour récupérer les actions clavier:if(GetAsyncKeyState( Convertir un const char * en char * [ par Mike ] SAlut,j'aimerais convertir un 'const char *' en 'char *', bizarement aucune libraire ne le fé, ou alors j'ai pas trouvé lol. Donc si vous pouviez m'ai Petit problem avec switch [ par Darkneon ] Salut, Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.J'ai le codde suivant.#include &l dlfcn.h [ par Quazar ] Salut Je cherche des info sur la librairie . Je voudrais savoir dans quel conditions il est préférable que je l'utilise:     - dlsym(HANDLE, const ch Quelle est cette erreur __w64 ? [ par themaste ] Bonjour à tous!Je suis en train de faire un programme, que j'avais fais sous dos avant.Puisque ca marchait, je l'ai repris pour faire une application


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.