CString转为char  *,代码如下(中英文都可以转换,无乱码):

CString funcName=_T("hello MessageBoxW O(∩_∩)O哈哈~");

//确定CString转换为ASCII后,所需的字节数
int nLen=WideCharToMultiByte(CP_ACP,0,funcName,-1,NULL,0,NULL,0);

char *szApi=(char*)calloc(nLen,sizeof(char)); // 分配空间
memset(szApi,0,nLen*sizeof(char)); //初始化空间

//CString转为char *
WideCharToMultiByte(CP_ACP,0,funcName,-1,szApi,nLen,NULL,0);

//弹出来看看转换结果
CString rst(szApi);
AfxMessageBox(rst);

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

效果截图:


CString转为char *_char

-------------------------------------------------------------------------------------------------------------------------------------------------------

整理了一下以上代码,方便以后查看和Copy:

//CString转为char *
//1.获取CString转为ASCII,所需的字节数
//2.根据得到的字节数分配内存空间和清零该空间
//3.开始将CString转为char *
int nLen=WideCharToMultiByte(CP_ACP,0,funcName,-1,NULL,0,NULL,0);
char *szApi=(char*)calloc(nLen,sizeof(char));
memset(szApi,0,nLen*sizeof(char));
WideCharToMultiByte(CP_ACP,0,funcName,-1,szApi,nLen,NULL,0);



------------------------------------------------------------------------------------------------------------------------------------------------------

​​

您的十分满意是我追求的宗旨。

您的一点建议是我后续的动力。