c++ - Convierta CString en const char*
visual-studio visual-c++ (7)
Hay una conversión explícita en CString a LPCTSTR, por lo que puede hacer (siempre que no se especifique Unicode):
CString str;
// ....
const char* cstr = (LPCTSTR)str;
¿Cómo convierto de CString
a const char*
en mi aplicación Unicode MFC?
Macros de conversión genérica (TN059 Otra sección de Consideraciones es importante):
A2CW (LPCSTR) -> (LPCWSTR)
A2W (LPCSTR) -> (LPWSTR)
W2CA (LPCWSTR) -> (LPCSTR)
W2A (LPCWSTR) -> (LPSTR)
Para convertir un TCHAR
CString a ASCII, use la macro CT2A
; esto también le permitirá convertir la cadena a UTF8 (o cualquier otra página de códigos de 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);
También hay una macro para convertir de ASCII -> Unicode ( CA2T
) y puede usarlos en aplicaciones ATL / WTL siempre que tenga VS2003 o superior.
Vea MSDN para más información.
Si su CString es Unicode, tendrá que hacer una conversión a caracteres de varios bytes. Afortunadamente hay una versión de CString que hará esto automáticamente.
CString unicodestr = _T("Testing");
CStringA charstr(unicodestr);
DoMyStuff((const char *) charstr);
Te recomiendo que uses TtoC de ConvUnicode.h
const CString word= "hello";
const char* myFile = TtoC(path.GetString());
Es un macro para hacer conversiones por Unicode
Tuve un problema similar. Tenía un búfer char*
con el nombre .so en él.
No pude convertir la variable char*
a LPCTSTR
. Así es como lo solucioné ...
char *fNam;
...
LPCSTR nam = fNam;
dll = LoadLibraryA(nam);
Nota: esta respuesta es anterior al requisito de Unicode; ver los comentarios
Solo echalo:
CString s;
const TCHAR* x = (LPCTSTR) s;
Funciona porque CString tiene un operador de reparto para hacer exactamente esto.
El uso de TCHAR hace que su código sea independiente de Unicode; Si no está preocupado por Unicode, simplemente puede usar char
lugar de TCHAR
.