C++各数据类型的相互转换 总结一

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值