C++中各种字符串类型之间的相互转换

* CString 转 string
str = CStr.GetString();


* CStringW 转 string
USES_CONVERSION;
str = T2A(CStr);


* string 转 CString
CString cstr(str.c_str());
or CString.format("%s", string.c_str());


* CString 转 char *
char * = cstr.GetBuffer(cstr.GetLength());
cstr.ReleaseBuffer();


* string 转 char *
str.c_str();


* char * 转 CString
CString str(char*);


* char * 转 string
string s(char *);


* 字符串 转 数字
int = atoi(string);
double = atof(string);


* 多字节指针 转 Unicode指针
LPWSTR ConvertCharToLPWSTR(const char * szString){
int dwLen = strlen(szString) + 1;
int nwLen = MultiByteToWideChar(CP_ACP, 0, szString, dwLen, NULL,0);//算出合适的长度
LPWSTR lpszPath = new WCHAR[dwLen];
MultiByteToWideChar(CP_ACP, 0, szString, dwLen, lpszPath,nwLen);
return lpszPath;}


*_T()宏和L()宏

如果要将ANSIC编码的字符串转换成UNICODE编码可以使用宏L,如L("hello"),这样它就表示UNICODE字符串,它占10个字节,因为UNICODE中每个字符占2个字节。

如果不知道程序中到底需要使用什么编码,可以使用_T()宏,如_T("hello"),它在ANSIC编码中表示"hello",在UNICODE编码中表示L("hello")。

你可能感兴趣的:(C++中各种字符串类型之间的相互转换)