Conversion

Résolu
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007 - 18 mars 2005 à 15:42
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007 - 19 mars 2005 à 09:31
je souhaiterai conaitre le code pour convertir un CString en Char*

voila se que j'ai fait mais jarive pas a convertir strNom en char*
j'y arive mais quand const char* et du coup sa marche plus dans strtok

void CGestionEleve::AjoutEleve(CString strNom)
{

CString strchemin = strNom;



// ouvre ou créer le fichier eleve.txt


FILE* FichierEleve;
FichierEleve=fopen("Eleve.txt","a");

// écrit le nom de l'élève dans le fichier eleve.txt
fprintf(FichierEleve,"Nom de l'élève: %s\n",strNom);


// ferme le fichier eleve.txt
fclose(FichierEleve);


char* decoupage;
char temp[MAX_PATH];
const char* chemin;


chemin=LPCSTR(strNom);


RtlZeroMemory(temp,MAX_PATH);


decoupage=strtok( chemin,"\");



strcat(temp,decoupage);
CreateDirectory(temp,NULL);
strcat(temp,"\");


}

merci beaucoup je galère un peut

6 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
19 mars 2005 à 00:30
char * CStringToPtr( CString & cString )
{
char * copy;
size_t length;

length = cString.GetLength(); // récupère la taille de la chaine
copy = new char[ (length + 8) ]; // alloue de la mémoire(+8 c'est plus `safe`)

if ( NULL != copy ) // si aucune erreur
{
strcpy( copy, cString.GetBuffer(0) ); // copie la chaine dans le nouvel espace mémoire
}

return copy; // renvoie la copie de la chaine contenue dans `cString`
// Renvoie NULL si problème/erreur/...

}

void CGestionEleve::AjoutEleve(CString strNom)
{

char * chemin;

chemin = CStringToPtr( strNom );
if ( NULL == chemin )
{
cout << "ERROR!!!\n";
return;
}

/****************************
*
Le reste de ton code ici ...
*
****************************/

delete [] chemin; // Ne pas oublier de libérer la mémoire à la fin

}

~(.:: NitRic ::.)~
3
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
18 mars 2005 à 16:14
slt, tiens voila deux ptites fonctions qui t'aiderons peu etre: (sur le
msdn, tu les aurai trouvé, je croi que c'est de la qu'elles
viennent)



char* UnicodetoANSI(CString wUnicode)

{

int Size;

char* szAnsi;

BOOL bTemp;



Size = WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, NULL, 0, NULL, &bTemp) ;

szAnsi = new char[Size];

WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, szAnsi, Size, NULL, &bTemp) ;

return szAnsi;



}



CString ANSItoUnicode(char* szAnsi)

{

int Size;



Size = MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, NULL, 0) ;

LPWSTR wUnicode = new WCHAR[Size];

MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, wUnicode, Size) ;

return wUnicode;



}



Je ne suis pas totalement convaincu que ce soit super propre comme fonctions, mais elle marche nikel...
0
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
18 mars 2005 à 16:28
je vien de relir ton code (ouai, jesais, g repondu avant d'avoir tou lu, c'est mal...)

mais heu si ca marche avec: chemin=LPCSTR(strNom);

tu peux essayer LPSTR (je suis pas sur que ca existe);

Tiens moi au courant si ca marche
0
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007
18 mars 2005 à 19:40
la conversion est bonne mais aprés quand je veut utiliser decoupage=strtok( chemin,"\"); sa marche pas car il veut un char* est pas un const char*

merci de tas réponse si ta une solution a se problème tien moi au courant merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
18 mars 2005 à 19:56
oui justement, je te disai de mettre LPSTR a la place de LPCSTR

le C signifie constant si je di pa de connerie



Je te di ca, c par analogie avec les types LPCTSTR et LPTSTR (et a vrai dire ca marche peu etre avec ca, essaye on c jamais...)
0
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007
19 mars 2005 à 09:31
euh pour le chemin=LPSTR(strNom); sa marche pas : cannot convert from 'class CString' to 'char *'

et pour char * CStringToPtr( CString & cString ) sa marche pas non plus je dévelope un projet en MFC il mafiche comme ereur sous l'aplication une opération non prise en charge a été tenté

je comprent pa pourkoi tous ceci marche de mon coté aussi j'aiseille des tas solution mais il y a toujour un probléme ho secour!!!

merci pour votre aide tenez moi au courant !
0
Rejoignez-nous