描述:
如何把BSTR类型转换成熟悉的char*或是UCHAR*D的类型?在线等!
解决方案1:
BSTR bstrtext= ::SysAllocString( L"Some text" );
int nLen;CString szNewStdString;
nLen=WideCharToMultiByte(CP_ACP,0,bstrtext,-1,NULL,NULL,NULL,NULL);
WideCharToMultiByte(CP_ACP,0,bstrtext,-1,szNewStdString.GetBufferSetLength(nLen),nLen,NULL,NULL);
---------------------------------------------------vc.net2003通过。
我个人认为最安全的转换方法。
去查以下_bstr_t的用法在MSDN上!
BSTR YourStr;
_bstr_t ConverStr(YourStr,TRUE); //TRUE:copy
//FALSE:Attach(如果你希望当ConverStr被析构后, // YourStr也释放掉
TCHAR *YourPurPosStr = (TCHAR *)ConverStr;
WideCharToMultiByte(CP_ACP,0,...,...,)
解决方案4: 好像有函数可以直接转换,你用BSTR2T看看,
假设有已经赋值BSTR类型实例str1;
char str2[n];
str2 = BSTR2T(str1);
在组件里BSTR类型和常用类型互相转换有很多类似函数
char sz[]="hello";
_bstr_t b;
b = _com_util::ConvertStringToBSTR(sz);
char * p = _com_util::ConvertBSTRToString(b);
up
解决方案7: BSTR类型的字符串可以通过_bstr_t间接转换
BSTR str;
//假设str在这已经被赋值
//…………
_bstr_t stra=str;
char* strb=stra;
我觉得这样子应该就可以,这里没有VC,没有验证过