在進行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;
}