一、区别
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