CString,string,char*轉換
首先假設這裏CString
是CStringA
,之後再討論CStringW
的轉換.
string
=>CString
string str;
CString cstr;
cstr.format("%s",str.c_str());
CString
=>string
CString cstr;
string str(cstr.GetBuffer(str.GetLength()));
string
=>char *
string str;
char *szstr = str.c_str();
char*
=>String
char *szstr;
string str(szstr);
CString
=>char*
CString cstr;
char szstr[50];
strcpy(szstr,cstr,sizeof(szstr))
或者
sprintf(szstr,"%s",cstr)
char *
=>CString
CString cstr;
char *szstr;
cstr.format("%s",szstr);
注意以上函數對於Unicode
編碼時,CString
爲CStringW
.char *
爲wchar_t*
.都爲寬字符,仍然適用.只不過是每個字符佔用2個字節而已.
CStringW
轉換爲 char*
:
- 方法一
用sprintf
,%ls
,和%S
同樣,是指向wchar_t*
寬字符串的,sprintf
將其轉換爲char*
字符串.
char sztest[50];
CStringW strW;
sprintf(sztest,"%ls",strW)
- 方法二
先從CStringW
轉到CStringA
,再從CStringA
轉到char *
.
CStringW OrigStr = _T("Some String");
CStringA strToCovert(OrigStr);
char *strConverted = (char *)(LPCSTR)strToCovert;