一、差別
CString和string均是字元串模闆類。
CString為Visual C++中最常用的字元串類,主要應用在MFC和ATL程式設計中,安全性最高,但可移植性最差。
string為标準模闆類(STL)定義的字元串類,已經納入C++标準之中,使用STL時必不可少的類型,是以是做工程時必須熟練掌握的。
char*為C程式設計中最常用的字元串指針,一般以'\0'為結束标志。
string是友善的,可以從幾乎所有的字元串構造而來,包括CString和char*;
CString次之,可以從基本的一些字元串變量構造而來,包括char*等;
char*沒有構造函數,僅可以指派。
二、轉換
2.1CString轉換string、char*
【CString轉string】
CString result;
string str = (LPSTR)(LPCTSTR)result;
CString緩沖區的字元串采用的是UNICODE的占16位的字元,而string中的是占8位的ANSI标準字元。
有2個方法解決:
1、使用轉換函數
char *chr=new char[wo.GetLength()]
WideCharToMultiByte(CP_ACP,0,wo.GetBuffer(),-1,chr,wo.GetLength(),NULL,NULL);
string str=chr;
2、推薦你使用string的寬字元版本wstring,它的成員函數和string幾乎一模一樣,你肯定會使用
wstring str=wo.GetLength();
【CString轉char*】
http://blog.sina.com.cn/s/blog_58e19ae7010003jt.html
CString m_Head;
char *codefile;
codefile=(LPSTR)(LPCTSTR)m_Head;
2.2string轉CString char*
【string轉CString】
CString cs(str.c_str());
【string轉char*】
方法1:
string str = "hello";
const char* cp= str.data();//char* cp = (char*)str.data();
方法2:
string str = "hello";
const char* cp= str.c_str();//char* cp = (char*)str.c_str();
ps:
2.3 char*轉CString string
【char*轉CString】
曲線轉換:char*-> string -> CString
char* ch = "hello";
string str = ch;
CString cstr(str.c_str());
【char*轉string】
char* cp = "hello";
string s = cp;
參考:
http://blog.sina.com.cn/s/blog_9017526301010r1i.html
http://www.cnblogs.com/bluestorm/p/3168720.html
http://dewei.iteye.com/blog/1566435
http://www.cnblogs.com/ziwuge/archive/2011/06/19/2084608.html