首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这里如何转参数类型

2012-02-26 
这里怎么转参数类型啊函数如下BOOLabc(BSTRpara,BSTR*bstr){cba(??,??)//这里怎么进行数据转换并赋值呢}B

这里怎么转参数类型啊
函数如下
BOOL   abc(BSTR   para,BSTR*   bstr)
{
        cba(??,??);                           //这里怎么进行数据转换并赋值呢
}

BOOL   cba(string   para1,   string*   str)
{
        ....
        ....
}

[解决办法]
BSTR转换成char*

  方法一,使用ConvertBSTRToString。例如:

#include
#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;
}

  方法二,使用_bstr_t的赋值运算符重载。例如:

_bstr_t b = bstrText;
char* lpszText2 = b;

  (4) char*转换成BSTR

  方法一,使用SysAllocString等API函数。例如:

BSTR bstrText = ::SysAllocString(L "Test ");
BSTR bstrText = ::SysAllocStringLen(L "Test ",4);
BSTR bstrText = ::SysAllocStringByteLen( "Test ",4);

  方法二,使用COleVariant或_variant_t。例如:

//COleVariant strVar( "This is a test ");
_variant_t strVar( "This is a test ");
BSTR bstrText = strVar.bstrVal;

  方法三,使用_bstr_t,这是一种最简单的方法。例如:

BSTR bstrText = _bstr_t( "This is a test ");

  方法四,使用CComBSTR。例如:

BSTR bstrText = CComBSTR( "This is a test ");

  或

CComBSTR bstr( "This is a test ");
BSTR bstrText = bstr.m_str;

  方法五,使用ConvertStringToBSTR。例如:

char* lpszText = "Test ";
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText);
[解决办法]
那就这样:
CString str1(pstr);
*pbstr=str1.AllocSysString();
很简单

热点排行