Conversion [Résolu]

Signaler
Messages postés
44
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
22 janvier 2007
-
Messages postés
44
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
22 janvier 2007
-
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

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

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 ::.)~
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

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...
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
44
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
22 janvier 2007

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
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

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...)
Messages postés
44
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
22 janvier 2007

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 !