MFC中CString和char*互转

      最近在做MFC的项目,遇到CString和char*互转的问题,项目中的字符集使用的是Unicode 字符集,遇到一些问题,记录一下。

      MFC项目中的字符集可以设置两种:Unicode 字符集和多字节字符集。使用不同的字符集CString和char*互转的方式也不相同。

1、Unicode 字符集下CString和char*互转

CString转char*:使用WideCharToMultiByte()函数,该函数可以映射一个unicode字符串到一个多字节字符串。WideCharToMultiByte第四个参数为-1时,返回的长度值包含字符串终结符"\0",这样在第二次使用时就可以将“\0”也转换了。

CString strTemp =_T("abc");
int length =WideCharToMultiByte(CP_ACP,0,strTemp,-1,NULL,0,NULL,NULL);
char* pTemp =new char[length];
WideCharToMultiByte(CP_ACP,0,strTemp,-1,pTemp,length,NULL,NULL);

char*转CString:

char* pTemp = "1234";
CString strTemp(pTemp);

2、多字节字符集下CString和char*互转

CString转char*:

//方式1
CString strTemp ="1234";  
char *pTemp =(LPSTR)(LPCSTR)strTemp; 
//方式2
CString strTemp ="1234";  
char *pTemp = strTemp.GetBuffer(strTemp.GetLength());  
strTemp.ReleaseBuffer();  

char*转CString:

char* pTemp = "1234";
CString strOut(pTemp);

 

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页