C++常用数据类型转换

来源:互联网 发布:网络电视看直播调清洗 编辑:程序博客网 时间:2024/06/04 19:28

一、其他数据类型转化为字符串
 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);

 

原创粉丝点击