MFC中怎样把CString类型转换成char*型
的有关信息介绍如下:mfc编程中经常会遇到CString类型转换成char*型的问题,有时候直接转换会出现各种莫名其妙的错误,那到底有什么方法技巧呢?
第一种方法如代码所示,
CStringstrTemp;charszTemp;strTemp=_T("abckdkfei");memset(szTemp,0,sizeof(szTemp));strcpy(szTemp,strTemp.GetBuffer(strTemp.GetLength()));
第二种方法可以使用(LPSTR)(LPCSTR)强转,
char*pchar;CStringstr="hello";pchar=(LPSTR)(LPCSTR)str;
但是有时候因为编码的问题会出现错误。
第三种方法代码如下所示,
charszTemp;CStringstrTemp="123456789";memset(szTemp,0,sizeof(szTemp));sprintf(szTemp,"%s",strTemp);
第四种方法,如果是基于UNICODE的,那么直接强制转换是不行的,直接转换在基于MBCS的工程可以,而在基于UNICODE的工程是不行的,CString会以UNICODE的形式来保存数据,强制类型转换只会返回第一个字符。d
方法一:可以用API:WideCharToMultiByte进行转换方法二:可以添加文件#include
第五种最笨的办法可以把CString先转换成String 再转换成char*。但是好多时候很麻烦也会出现各种错误。
第六种办法比较麻烦,可以试试WideCharToMultiByte,这种方法一般都有效。
CStringstr;
DWORDdwNum=WideCharToMultiByte(CP_OEMCP,NULL,str,-1,NULL,NULL,0,NULL);
char*c=newchar[dwNum];WideCharToMultiByte(CP_OEMCP,NULL,str,-1,c,dwNum,0,NULL