PB: Fonction de conversion Unicode->char - C++ - Programmation
Marsh Posté le 01-08-2005 à 23:01:42
Personne ne sait?
Esce que ca viendrait pas du fait que je converti d'un const vers du pas const?
Marsh Posté le 04-08-2005 à 09:01:40
Depuis quand on utilise malloc en C++? Je l'utilise dans l'exemple pour que tu puisses l'utiliser
char* Menu :: wchar_t_to_char(const wchar_t* wc)
{
if(wc!=NULL)
{
int i;
char* lwc = malloc(wcslen(wc) + 1); // +1 pour le zéro
while(*wc) *lwc++ = (char)*wc++;
return lwc;
}
return "error"; // le 0 terminal est implicite....
}
C'est quand même bizarre d'allouer dans une fonction sans libérer dans celle-ci. T'aurais pas des petites fuites dans ton prog?
Marsh Posté le 04-08-2005 à 13:58:18
Utilise des wstring/string.
Code :
|
Marsh Posté le 05-08-2005 à 17:43:24
Merci bien à vous deux.
C'est vrai que pour l'allocation malloc il doit y avoir une petite fuite mais celle-ci est minime car appelé très peu souvent, mais ce n'est pas une raison je suis d'accord. Je vais voir ça.
Les wstring j'avais essayé mais j'avais une erreur qui m'a gonflé. J'incluais string et le compilo ne disais rien mais impossible après d'utiliser std::string et les wcout alors j'ai essayé autrement.
Marsh Posté le 27-08-2005 à 08:14:13
tu peux aussi utiliser la fonction MFC WideCharToMultiByte et sous ATL la macro W2T
Marsh Posté le 01-08-2005 à 12:04:51
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:
que j'appel comme cela:
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