在进行MFC 开发的时候避免不了用到CString 与 char* 类型互相转换,网络上提供许多方法,但是我觉得以下方式在转换的过程中比较安全,所以写出来方便大家参考,与人方便,与己方便。
1、CString 转 char*
char* CImagePro::CstringToChar(CString str)
{
/*char* buf=new char[10];*/
int len=WideCharToMultiByte(CP_ACP,0,str,-1,NULL,0,NULL,NULL);
char* buf=new char[len+1];
WideCharToMultiByte(CP_ACP,0,str,-1,buf,len,NULL,NULL);
return buf;
}
2、char* 转CString
CString char2CString(char* ch)
{
int charLen = strlen(ch);
//计算多字节字符的大小,按字符计算。
int len =MultiByteToWideChar(CP_ACP,0,ch,charLen,NULL,0);
//为宽字节字符数组申请空间,数组大小为按字节计算的多字节字符大小
TCHAR *buf = new TCHAR[len + 1];
//多字节编码转换成宽字节编码
MultiByteToWideChar(CP_ACP,0,ch,charLen,buf,len);
buf[len] ='\0'; //添加字符串结尾,注意不是len+1
//将TCHAR数组转换为CString
CString strTemp;
strTemp.Append(buf);
//删除缓冲区
delete []buf;
return strTemp;
}