--------------------------按我的条理整理的,直接可以赋值的写在最后,其他的方法都是在此基础上得来的----------------------------
以下用pcstr表示const char*(LPCTSTR),pstr表示char*(LPSTR),用cstr表示Cstring,用str表示string,i表示int
string转char*
1.pcstr=str.c_str();//有"\0"
2.pcstr=str.data();//没有"\0"
3.str.copy(pstr,str.length(),0);//没有"\0",要先memset
CString转char*
1.pstr=cstr.GetBuffer(0);
2._tscpy(pstr,cstr);
3.pstr=(LPTSTR)(LPCTSTR)cstr;
CString转TCHAR*
char* CString2Str(CString& str) { char* ret; TCHAR* tmp; int len = str.GetLength(); tmp = new TCHAR[len+1]; ret = new char[len+1]; memset(ret, 0, len+1); memcpy(tmp, str.GetBuffer(), len*sizeof(TCHAR)); str.ReleaseBuffer(); tmp[len] = 0; #ifdef UNICODE WideCharToMultiByte(CP_ACP, NULL, tmp, len, ret, len+1, NULL, NULL); #else strcpy(ret, (char*)tmp); #endif delete tmp; return ret; }
CString转WCHAR*
AllocSysString
char*转WCHAR*
MultiByteToWideChar()
WCHAR *转char*
WideCharToMultiByte()
wcstombs()
各种转int
1.i=atoi(_in const char* src);
int转各种
1.cstr.format();
2.itoa(_in int val,_out char* dst,_in int radix)
输出:
都可以cout直接输出
赋值:
string可以接受CString,char*
CString可以接受char*
加法:
string可以加CString,char*
CString可以加char*
越界:
CString抛出异常
string没有
比较:
string,CString不可以比较,都可以与char*比较