---------------------------按我的条理整理的,直接可以赋值的写在最后,其他的方法都是在此基础上得来的----------------------------
以下用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*比较