Salut , j'ai fait une petite fonction de conversion des caractres unicode vers du char*.
Hors parfois il me sort n'importe quoi.
Voici un exemple de ce qu'il me sort:
laille: 11 ecris: @pð
taille: 9 ecris: 127.0.0.1ont
au lieu de
taille: 11 ecris: /WaterWorld
taille: 9 ecris: 127.0.0.1
En fait je me sert de cela dans un jeu que je fait avec Irrlitch qui pour être un max portable utilise l'Unicode pour les guis.
Donc en gros on a dans Irrlitch des "const wchar_t machin" que je veux transformer en "char* truc" pour faire mes connection socket et lancer une map.
voici le code:
Code :
- char* Menu :: wchar_t_to_char(const wchar_t* wc){
- if(wc!=NULL){
- int i;
- char* lwc = (char*) malloc(wcslen(wc));
- i = wcstombs(lwc, wc, wcslen(wc));
- cout <<"taille: " <<wcslen(wc) << " ecris: " << lwc << endl;
- return lwc;
- }
- return "error\0";
- }
|
que j'appel comme cela:
Code :
- char* Menu::getMap(){
- return (char*)wchar_t_to_char(current_map);
- }
|
et current_map c'est "const wchar_t* current_map = L"/WaterWorld" "
explication des foncions: wcstombs(char*, wchar_t*, int)
elle signifie wide chars to multibyte chars.
et wcslen(wchar_t*) renvoie un int et signifie wide chars length.
Voilaà si qq'un sait pourquoi ca merde. Merci.
Message édité par Toby14 le 01-08-2005 à 12:06:15