Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2867 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Conversion char * vers wchar_t *

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Conversion char * vers wchar_t *

n°885876
hugo25
Posté le 29-10-2004 à 15:17:13  profilanswer
 

Bonjour,
J'essaie de faire un programme en c++ avec Visual Studio 6 qui permet de convertir un char * en wchar *.
Voici le code :

Code :
  1. #include <string>
  2. #include <iostream>
  3. void wsubstring(wchar_t *dest, const wchar_t *src, const int from, const int length)
  4. {
  5.       int i;
  6.       for (i=0; i<length; i++)
  7.          dest[i] = src[i+from];
  8.       dest[i] = '\0';
  9. }
  10.  
  11. void charToWchar(char *in, wchar_t *out)
  12. {
  13.    std::use_facet< std::ctype<wchar_t> >(std::locale()).widen(in,in+strlen(in),out);
  14.    wsubstring(out, out, 0, strlen(in));
  15. }
  16. int main(void)
  17. {
  18.    char in[255] =  "coucou ca vas";
  19.    wchar_t out[255];
  20.    charToWchar(in, out);
  21.    std::wcout << out << "\n";
  22.    return 0;
  23. }


Seulement, j'obtient 2 erreurs pour la ligne 13 quand je compile :

Code :
  1. error C2780: 'const _F &__cdecl std::use_facet(const class std::locale &,const _F *,bool)' : expects 3 arguments - 1 provided
  2. error C2228: left of '.widen' must have class/struct/union type


Je n'arrive pas à trouver la cause de ces erreurs. Merci pour votre aide.


Message édité par hugo25 le 29-10-2004 à 15:30:41
mood
Publicité
Posté le 29-10-2004 à 15:17:13  profilanswer
 

n°885901
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2004 à 15:42:20  profilanswer
 

@_@
 
ben la première erreur, tu files qu'un argument à std::use_facet< std::ctype<wchar_t> >, donc il gueule (il en veut 3) et il ne construit pas ton objet
et la 2e, comme l'objet n'est pas construit tu fais un .widen dans le vide, donc il gueule aussi [:spamafote]
 
Accessoirement, différentes fonctions de conversion existent déjà [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°885907
hugo25
Posté le 29-10-2004 à 15:45:49  profilanswer
 

Je n'ai pas trouvé de fonction de conversion.  
Masklinn, si tu en connait une, dit moi ou je peux la trouver. Merci. :)

n°885927
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2004 à 15:58:20  profilanswer
 

dans la MSDN


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°885928
hugo25
Posté le 29-10-2004 à 15:58:58  profilanswer
 
n°885933
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2004 à 16:01:58  profilanswer
 

ben voilà, t'as plus qu'à trouver celle qui fait l'opération inverse et à encapsuler le tout histoire de gérer la mémoire et les erreurs proprement [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°885939
Lam's
Profil: bas.
Posté le 29-10-2004 à 16:05:42  profilanswer
 

C'est pas très portable hélas les facets. Le plus simple (et le plus courant), c'est d'utiliser la macro _USE(loc, fac), et d'utiliser codecvt ensuite.
 
C'est décrit là je crois:
http://www.codeguru.com/Cpp/Cpp/cp [...] .php/c849/
 
Sinon, en MFC, il y a les classiques A2CT et compagnie qui sont rapides, puissants, efficaces.
 
Et sous unix, il y a la librairie iconv pour convertir tout en tout (parce que malheureusement, ça ne suffit pas de mettre ou d'enlever des 0 dans les wchar).

n°885944
Lam's
Profil: bas.
Posté le 29-10-2004 à 16:09:19  profilanswer
 

Argh, viens de relire mon code, et en fait il y a la fonction classique Win32 qui fait ça: WideCharToMultiByte. Mais quel bordel à utiliser...
 
http://msdn.microsoft.com/library/ [...] e_2bj9.asp


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Conversion char * vers wchar_t *

 

Sujets relatifs
[C] Conversion nombre hexa en decimal[C++][Drivers] Conversion d'un driver pinnacle Xp vers W2k3
Liens vers un frameset (javascript needed?)Lien vers un autre fichier excel
[C] Probleme de conversion char -> intProblème de transfert de Paradox vers MSSQL
Créer un lien vers un fichier excel à partir d'une variableDelphi : transtypage Interger -> Char : ??
Plus de sujets relatifs à : [C++] Conversion char * vers wchar_t *


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR