您的位置:首页 > 编程语言 > C语言/C++

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

2011-12-26 16:30 441 查看
一、其他数据类型转化为字符串

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: