Publicité
Offres partenaires
Actualités relatives

ARM vs x86 ? Pour le moment, c'est ARM

Publié le 09 janvier 2008

Intel veut imposer le x86 dans les PDA, smartphones et autres GPS ? Peut-être, mais ARM a encore la préférence. Lire la suite

Bug de l'AGP 8x : ATi communique

Publié le 17 septembre 2002

ATi vient de publier une page web dédiée au problème de sa Radeon 9700 Pro avec les cartes mères AGP 8x. Seuls les possesseurs de Radeon 9700 Pro dotées de la première révision (l'AE2) rencontr Lire la suite

nForce 790i SLI : données corrompues ?

Publié le 14 avril 2008

Selon une page présente sur le site même du constructeur, le chipset nForce 790i SLI de Nvidia souffrirait d’un inquiétant problème de corruption de données. Si aucun problème n’est à signaler lors d’une utilisation « normale », le problème... Lire la suite

Problèmes de scintillement sur les GeForce FX 5900

Publié le 10 septembre 2003

Depuis quelques jours déjà, circulent sur divers forums des plaintes d'utilisateurs de cartes à base de GeForce FX 5900. Celles-ci concernent un problème de scintillements visibles dans les scènes 3D de couleurs claires. Nvidia confirme aujourd' Lire la suite

Les derniers tests

Les téléphones tactiles peuvent-ils remplacer les PC ?

Publié le 24 octobre 2008

Les téléphones tactiles sont-ils capables de rivaliser avec les PC ? Lire la suite

Test du Shuttle X27 : l’Atom sous Vista ?

Publié le 23 octobre 2008

Dans la course à la puissance à laquelle se livrent Intel et AMD, l’Atom est une sorte d’outsider. C’est pourtant lui que Shuttle a choisi pour son ordinateur petit format. Mais est-il assez puissant pour une utilisation au quotidien ? Lire la suite

Test Sony Vaio TT et Z : Tom's Guide raconte

Publié le 22 octobre 2008

Avant même leurs sorties, les Vaio TT et Vaio Z de Sony sont passés entre les mains de Tom's Guide pour une première impression sur la finition et les capacités techniques des deux machines. Lire la suite

Les meilleurs logiciels pour l'overclocking

Publié le 20 octobre 2008

Les overclockeurs n'en sont plus aux jumpers sur la carte mère, maintenant ils utilisent des logiciels. Lire la suite

  FORUM Tom's Hardware » Programmation » C / C++ / Java » Probleme C++/MFC : CString -> Char* et inversement
 

Probleme C++/MFC : CString -> Char* et inversement

Il y a 52 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici



Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Probleme C++/MFC : CString -> Char* et inversement
 
Plus d'informations

Bonjour toutle monde.

Bon voilà, je débute en C++ et encore plus avec les MFC et je galère un peu.. :sarcastic:
alors après avoir passé plusieurs heures aujourd'hui et hier
a chercher sur le net ou dans la msdn comment convertir un CString en char *je me résigne à venir demander sur le forum!!!
A mon avis,on vous a déjà demandé mais j'ai pas trouvé... :cry:

J'explique mon pb:
Je programme un client/serveur de transfert de fichier avec des MFC.Je dois donc récupérer le nom de fichier de type CString.
et l'envoyer à travers la socket mais celle-ci n'accpete pas les CString, juste les char *....et je n'arrive pas a le convertir.
De l'autre coté je devrai reconvertir le char * en CString.

J'ai essayé un peu tout ce qui était donné sur les forums à savoir
par exemple :

Code :
  1. char* NameFile = (char*)LPCTSTR(NomFichier);



Mais aussi "WideCharToMultiByte" et son contraire mais là le compilateur me trouve 2 erreurs que je n'arrive pas à résoudre (et comprendre :s)
je vous mets le code du client (le serveur étant sensiblement la même chose)

Code :
  1. //Methode d'envoie de donnée
  2. int CTransfert::EnvoyerDonnee(CString Chemin, CString NomFichier)
  3. {
  4.     char *NomFichierStr;
  5.     WideCharToMultiByte(CP_ACP, 0, NomFichier, -1, NomFichierStr, wcslen(NomFichier)+1, NULL, NULL);
  6.     //Prend en parametre le chemin du fichier et son Nom;
  7.     send(Client.sock, NomFichierStr, sizeof(NomFichierStr),0);
  8.     /*Ouverture du fichier en Lecture et en mode Binaire*/
  9.     fileFlux.open(Chemin, ios::in | ios::binary);
  10.     if (fileFlux.fail())
  11.         return(-1);
  12.         //Si l'ouverture echoue, on quitte et on renvoie -1
  13.     else
  14.     {    //Tant qu'on est pas a la fin du fichier, on lit..
  15.         while ((fileFlux.read(&charLuEnvoye, 1)) != 0)
  16.             /*..et chaque caractere lu est envoyer par la socket
  17.             du client (declarer dans Transfert.h)*/
  18.             send(Client.sock, &charLuEnvoye, 1, 0);
  19.         fileFlux.close();
  20.         return (0);
  21.         //on retourne 0 lorsque tout est terminé ou si il n'y a pas d'erreur
  22.     }
  23.     /*Fermeture du fichier*/
  24. }


et les erreus sont
1)
C:\Projet Informatique\IHM\PCEtude\CTransfert.cpp(55) : error C2664: 'wcslen' : cannot convert parameter 1 from 'class CString' to 'const unsigned short *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

2)C:\Projet Informatique\IHM\PCEtude\CTransfert.cpp(55) : error C2664: 'WideCharToMultiByte' : cannot convert parameter 3 from 'class CString' to 'const unsigned short *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

dans tout les exemples que j'ai vu , "wcslen" prend bien 1 parametre.Et le parametre 3 je comprend pas pourquoi c'est un const unsigned short* :s

Si vous pouviez m'aider pour convertir un CString -> Char * et un Char* en Cstring cela me sauverai vraiment car la je galere...:(

Merci d'avance et désolé du dérangement :sarcastic: [:apocalipticangel:6]

Liens sponsorisés

Profil : Pointeur
Plus d'informations

CString -> LPTSTR (just un define de char*) : GetBuffer

char* -> CString : avec le constructeur...


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

Voila ce que j'avais trouver sur cppfrance, et j'avais essayer mais sa ne marchais pas trop...
si ce que tu as dit c'est cela:

"De CString à char*
char* buffer=(char*)LPCTSTR(myString);

de char* à CString
CString myString(myChars);"


c'est cela?


EDIT : Finalement pas besoin de conversion comme je voulais faire.
la solution poour envoyer dans la socket sans se prendre trop la tete avec les CString c est :
coté client :
send(Client.sock, (LPTSTR)(LPCTSTR)NomFichier, 200 ,0);
coté serveur :
recv(Serveur.sockTransfert, (LPTSTR)(LPCTSTR)NameFileCString, 200,0);

j'ai mit 200 car quand je faisait la taille precise du CString sa plantais, sa rajouter des caracteres dans le fichier ou dans le nom du fichier...avec 200 c'est bon sa marche

En tout cas merci beaucoup!!


Message édité par boti94 le 07-04-2005 à 23:29:07

  FORUM Tom's Hardware » Programmation » C / C++ / Java » Probleme C++/MFC : CString -> Char* et inversement

Aller à :
 

Annonces Google