char是C/C++的基本数据类型,CString是使用MFC时的字符数据类型,string是使用C++的STL时常用数据类型。
1、CString to char*
CString str_cs("haha");
const char* p = str_cs.GetBuffer();
若需要对字符串进行后续的处理,则应该使用new或者malloc对p指针进行动态内存申请,大小由str_cs.GetLength()确定。
CString str_cs("haha");
char* p = new char[str_cs.GetLength()];
strcpy(p, (LPCTSTR)str_cs);
delete p;
2、char* to CString
char* p = "haha";
CString str_cs;
str_cs.Format("%s", p);
3、string to char*
string str_s = "haha";
char* p = str_s.c_str();
4、char * to string
char* p = "haha";
string str_s(p);
5、string to CString
string str_s = "haha";
CString str_cs;
str_cs.Format("%s", str_s.c_str());
6、CString to string
CString str_cs("haha");
string str_s(str_cs.GetBuffer(str_cs.GetLength()));
str_cs.ReleaseBuffer();
注意:上面这句GetLength()操作可加可不加,使用GetBuffer时若对返回的字符指针有内容修改操作,则需要用ReleaseBuffer()释放内存。
转化为char*时,若不修改字符串的值,定义成const char*更安全。