一、其他数据类型转化为字符串
char temp[200];
1 短整型(int i)
itoa(i,temp,10); \\将i转化为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); \\将i转化为字符串放入temp中,最后一个数字表示二进制
2 长整形(long l)
ltoa(l,temp,10); \\将l转化为字符串放入temp中,最后一个数字表示十进制
二、从其它包含字符串的变量中获取指向该字符串的指针
1 从CString 到 char* (强转);
CString str = "2012什么年代";
char* buf = (LPSTR)(LPCTSTR)str;
2 (使用strcpy)
CString theString(“this is a test”);
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz,theString);
需要说明的是,strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。
3 (使用CString::GetBuffer)
CString s(_T("this is a test"));
LPTSTR p = s.GetBuffer();
//这里添加使用p的代码
if(p!=NULL) *p = _T('\0');
s.ReleaseBuffer();
//使用完后及时释放,以便能用其它的CString成员函数
三、字符串转换为其它数据类型
1 char temp[200];
strcpy(temp,"123");
2 字符串转成短整形
int i = atoi(temp);
3 字符串转成长整形
long l = atol(temp);
4 字符串转成浮点数
double d = atof(temp);
四、其它数据类型转换到CString
1 使用Cstring的函数 format("%x",XXX);
char temp[200];可以 CString str = temp;
五、BSTR转换成char*
1 使用ConvertBSTRToString;
#pragma comment(lib,"comsupp.lib")
int_tmain(int argc, _TCHAR* argv[])
{
BSTR bstrText = ::SysAllocString(L"Test");
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText);
SysFreeString(bstrText); //用完释放
delete[] lpszText2;
return 0;
}
2 使用_bstr_t的赋值运算符重载。
_bstr_t b = bstrText;
char* lpszText2 = b;
六、char*转换成BSTR
1 使用SysAllocString等API函数。
BSTR bstrText = ::SysAllocString(L"Test");
BSTR bstrText = ::SysAllocStringLen(L"Test",4);
BSTR bstrText = ::SysAllocStringByteLen(L"Test",4);
2 使用COlevariant或_variant_t.
//COleVariant strVar("This is a test");
_variant_t strVar("This is a test");
BSTR bstrText = strVar.bstrVal;
3 使用_bstr_t,这是一种最简单的方法。
BSTR bstrText = _bstr_t("this is a test");
4 使用CCOmBSTR.
BSTR bstrText = CComBSTR("this is a test");
或
CComBSTR bstr("This is a test");
BSTR bstrText = bstr.m_str;
5 使用ConvertStringToBSTR。
char* lpszText = "Test";
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText);
七、CString转换成BSTR
1 通常是通过使用 CStringT::AllocSysString 来实现。
CString str("this is a test");
BSTR bstrText = str.AllocSysString();
……
SysFreeString(bstrText);//用完释放
八、BSTR转换成CString
1 BSTR bstrText = ::SysAllocString(L"Test");
CStringA str;
str.Empty();
str = bstrText;
或
CString str(bstrText);