如何把BSTR类型转换成熟悉的char*或是UCHAR*D的类型?在线等!

解决方案 »

  1.   

    char sz[]="hello";
    _bstr_t b;
    b = _com_util::ConvertStringToBSTR(sz);
    char * p = _com_util::ConvertBSTRToString(b);
      

  2.   

    BSTR类型的字符串可以通过_bstr_t间接转换
    BSTR str;
    //假设str在这已经被赋值
    //…………
    _bstr_t stra=str;
    char* strb=stra;
    我觉得这样子应该就可以,这里没有VC,没有验证过
      

  3.   

    好像有函数可以直接转换,你用BSTR2T看看,假设有已经赋值BSTR类型实例str1;
    char str2[n];
    str2 = BSTR2T(str1);在组件里BSTR类型和常用类型互相转换有很多类似函数
      

  4.   

    WideCharToMultiByte(CP_ACP,0,...,...,)
      

  5.   

    去查以下_bstr_t的用法在MSDN上!
    BSTR YourStr;  _bstr_t ConverStr(YourStr,TRUE);  //TRUE:copy
                                      //FALSE:Attach(如果你希望当ConverStr被析构后,                                       //      YourStr也释放掉
    TCHAR *YourPurPosStr = (TCHAR *)ConverStr;
      

  6.   

    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通过。
    我个人认为最安全的转换方法。