//test 1
CString str(_T("求索阁"));
int len = str.GetLength();
char* cstr = new char[len + 1];
cstr[len] = 0;
WideCharToMultiByte(CP_OEMCP,0,str,-1,cstr, len, NULL, NULL);
小结:test1是根据方法《CString、string 和char* 之间的转换总结》而来,当str为中文时,此法有误。
//test 2
CString str2(_T("求索阁"));
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,str2,-1,NULL,0,NULL,FALSE);
char *psText;
psText = new char[dwNum];
if(!psText)
{
delete []psText;
}
WideCharToMultiByte (CP_OEMCP,NULL,str2,-1,psText,dwNum,NULL,FALSE);
delete []psText;
psText =NULL;
小结:test2是根据方法《MultiByteToWideChar和WideCharToMultiByte用法详解》而来。
//test 3
CString str3 = _T("求索阁");
//声明标识符
USES_CONVERSION;
//调用函数,T2A和W2A均支持ATL和MFC中的字符转换
char * pFileName = T2A(str3);
小结:test2是根据方法《新手必看:UniCode 下 CString 转 char* 的方法》而来。