CString ,string , char * 之间的转换在开发的过程中会经常的用到,今天做一个小总结,在以后的开发的过程中不断的完善。
1 CString char* 之间的转换
CString 转 char*
1.传给未分配内存的const char* (LPCTSTR)指针.
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针.
CString cstr = "ASDDSD";
char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
cstr.ReleaseBuffer();
//修改ch指向的值等于修改cstr里面的值.
//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。
CString cstr1 = "ASDDSD";
int strLength = cstr1.GetLength() + 1;
char *pValue = new char[strLength];
strncpy(pValue, cstr1, strLength);
char*转 CString
CString str;
char *a="121a";
str.Format(%s,a);
cout<<str<<endl;
2 string char* 之间的转换
char* 转string
string s(char *);
string 转char*
char *p = string.c_str();
3 string CString 之间的转换
string 转 CString
CString.format("%s", string.c_str());
CString 转 string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.