Bonjour,
savez-vous comment faire pour convertir une chaine TCHAR* en char* ?
merci
Version imprimable
Bonjour,
savez-vous comment faire pour convertir une chaine TCHAR* en char* ?
merci
Bah, un TCHAR c'est déjà un char si UNICODE n'est pas défini, si UNICODE est défini TCHAR est défini à wchar_t. Ta question serait-elle comment convertir un wchar_t en caractère multioctet (représentable par un char dans le jeu de caractères ANSI) ? Il y a wcstombs (wide character string to multibyte string), déclarée dans stdlib.h. C'est du domaine du C standard, rien à voir avec Windows. La fonction mbstowcs réalise l'inverse.
TCHAR* en char*, c'est assez agaçant en C, ou en C++ sans MFC, ou en C++ avec un MFC trop vieux, car il n'y a rien de pratique pour ça.
Typiquement en C, il faut du #ifdef :
Alors qu'en C++ sous MFC récent, c'est tout simple:Code:
1
2
3
4
5
6 TCHAR * chaineT = ... ; #ifdef UNICODE /* TCHAR = wchar_t : convertir. */ #else /* TCHAR = char : copier ou réutiliser le pointeur. */ #endif
Code:
1
2
3
4
5 CString chaineT; CStringA chaineA(chaineT); //Et hop, chaineA est toujours une chaine de char. //On peut récupérer un const char* dessus, //ou utiliser GetBuffer() pour avoir un char*...