begin process at 2010 03 21 19:31:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

const char * vers char *


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

const char * vers char *

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ée 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

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales