VC++中CString、char *之間的相互轉換[Unicode設定下]

VC++中CString、char *之間的相互轉換[Unicode設定下]

VC++中CString、char *之間的相互轉換[Unicode設定下]

 

資料來源:http://blog.jasonding.top/2015/01/30/Programming/%E3%80%90%E7%BC%96%E7%A8%8B%E6%8B%BE%E9%81%97%E3%80%91LPCTSTR%E3%80%81CString%E3%80%81char%E3%80%81string%E4%B9%8B%E9%97%B4%E7%9A%84%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2/

 

CString –>char *

 

CString str1 =_T(“123”);

int len = WideCharToMultiByte(CP_ACP,0,str1,-1,NULL,0,NULL,NULL);

char *ptxtTemp = new char[len +1];

WideCharToMultiByte(CP_ACP,0,str1,-1,ptxtTemp,len,NULL,NULL );

//…

delete[] ptxtTemp;

 

 

char * –>CString

 

char *p =”test”;//方法一

CString str(p);

 

char * pFileName = “你好,世界!Hello,World”;

//計算char *陣列大小,以位元組為單位,一個漢字占兩個位元組

int charLen = strlen(pFileName);

//計算多位元組字元的大小,按字元計算。

int len = MultiByteToWideChar(CP_ACP,0,pFileName,charLen,NULL,0);

//為寬位元組字元陣列申請空間,陣列大小為按位元組計算的多位元組字元大小

TCHAR *buf = new TCHAR[len + 1];

//多位元組編碼轉換成寬位元組編碼

MultiByteToWideChar(CP_ACP,0,pFileName,charLen,buf,len);

buf[len] = ‘\0‘; //添加字串結尾,注意不是len+1

//將TCHAR陣列轉換為CString

CString pWideChar;

pWideChar.Append(buf);

//刪除緩衝區

delete []buf;

 

 

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *