Att*_*lah 49 c++ unicode mfc visual-studio visual-c++
如何在我的Unicode MFC应用程序中转换CString为const char*?
Rob*_*Rob 65
要将TCHARCString 转换为ASCII,请使用CT2A宏 - 这也允许您将字符串转换为UTF8(或任何其他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);
Run Code Online (Sandbox Code Playgroud)
还有一个宏可以从ASCII转换 - > Unicode(CA2T),只要你有VS2003或更高版本,你就可以在ATL/WTL应用程序中使用它们.
有关详细信息,请参阅MSDN.
Mar*_*som 20
如果您的CString是Unicode,则需要转换为多字节字符.幸运的是有一个CString版本会自动执行此操作.
CString unicodestr = _T("Testing");
CStringA charstr(unicodestr);
DoMyStuff((const char *) charstr);
Run Code Online (Sandbox Code Playgroud)
Ric*_*dle 15
注意:此答案早于Unicode要求; 看到评论.
刚刚施展它:
CString s;
const TCHAR* x = (LPCTSTR) s;
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为CString有一个强制转换运算符.
使用TCHAR使您的代码与Unicode无关; 如果你不关心Unicode,你可以简单地使用char而不是TCHAR.
有一个 CString 到 LPCTSTR 的显式转换,所以你可以这样做(如果未指定 unicode):
CString str;
// ....
const char* cstr = (LPCTSTR)str;
Run Code Online (Sandbox Code Playgroud)