Conversion CString en const char*
Comment puis-je convertir à partir de CString
const char*
dans mon application Unicode MFC?
7 réponses
Pour convertir un TCHAR
CString ASCII, utiliser le CT2A
macro-cela vous permettra également de convertir la chaîne en UTF8 (ou toute autre page de Code Windows):
// Convert using the local code page
CString str(_T("Hello, world!"));
CT2A ascii(str);
TRACE(_T("ASCII: %S\n"), ascii.m_psz);
// Convert to UTF8
CString str(_T("Some Unicode goodness"));
CT2A ascii(str, CP_UTF8);
TRACE(_T("UTF8: %S\n"), ascii.m_psz);
// Convert to Thai code page
CString str(_T("Some Thai text"));
CT2A ascii(str, 874);
TRACE(_T("Thai: %S\n"), ascii.m_psz);
il y a aussi une macro à convertir de ASCII -> Unicode (CA2T
) et vous pouvez les utiliser dans les applications ATL/WTL aussi longtemps que vous avez VS2003 ou plus.
voir le MSDN pour en savoir plus.
si votre CString est Unicode, vous aurez besoin de faire une conversion en caractères multi-octets. Heureusement, il existe une version de CString qui le fera automatiquement.
CString unicodestr = _T("Testing");
CStringA charstr(unicodestr);
DoMyStuff((const char *) charstr);
Note: Cette réponse est antérieure à L'exigence Unicode; voir les commentaires.
cast:
CString s;
const TCHAR* x = (LPCTSTR) s;
cela fonctionne parce que CString a un opérateur cast pour faire exactement cela.
L'utilisation de TCHAR rend votre code Unicode indépendant; si vous n'êtes pas concerné par Unicode, vous pouvez simplement utiliser char
au lieu de TCHAR
.
Il y a un cast explicite sur CString LPCTSTR, de sorte que vous pouvez le faire (à condition de l'unicode n'est pas spécifié):
CString str;
// ....
const char* cstr = (LPCTSTR)str;
j'ai eu un problème similaire. J'ai eu un char*
tampon avec la .ainsi le nom.
Je ne pouvais pas convertir le char*
variable à LPCTSTR
. Voici comment je l'ai eu autour d'elle...
char *fNam;
...
LPCSTR nam = fNam;
dll = LoadLibraryA(nam);
je vous recommande D'utiliser TtoC de ConvUnicode.h
const CString word= "hello";
const char* myFile = TtoC(path.GetString());
C'est une macro pour faire des conversions par Unicode
Macros de Conversion génériques (TN059 la section Autres considérations est importante):
A2CW (LPCSTR) -> (LPCWSTR)
A2W (LPCSTR) -> (LPWSTR)
W2CA (LPCWSTR) -> (LPCSTR)
W2A (LPCWSTR) -> (LPSTR)