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);
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
效果截图:
-------------------------------------------------------------------------------------------------------------------------------------------------------
整理了一下以上代码,方便以后查看和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);
------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。