BSTR bstrstr;//这是你要转换的BSTR变量
LPCOLESTR szFromBSTR;
szFromBSTR=bstrstr;
int nLen;
nLen=WideCharToMultiByte(CP_ACP,0,szFromBSTR,-1,NULL,NULL,NULL,NULL)
LPSTR szNewStdString;//这是转换的结果变量
szNewStdString=(char)malloc(nLen);
WideCharToMultiByte(CP_ACP,0,szFromBSTR,-1,szNewStrString,nLen,NULL,NULL);2,
如果使用_bstr_t , 问题就很轻松!
#include<comdef.h>BSTR bsYourString;
....
_bstr_t bstrYourString = bsYourString;CString str = (LPCTSTR)bstrYourString;
or
LPCTSTR lpszStr = (LPCTSTR)bstrYourString; 3,
#include"comutil.h"
{
      char sz[]="hello";
      _bstr_t b;
      b = _com_util::ConvertStringToBSTR(sz);
      char * p = _com_util::ConvertBSTRToString(b);
}      

解决方案 »

  1.   

    TO:kane_yj() BSTR是以什么样的格式存储的呀?
      

  2.   

    是一个带长度前缀的字符串,主要由操作系统来管理的,所以要用api.主要用来和VB打交道的(VB里的string就是指它)要操作它的API函数有很多,具体可以去查一下msdn.比如SysAllocString,SysFreeString等等.vc里封装它的类如_bstr_t,及ATL中的CComBSTR等.
      

  3.   

    一个 BSTR 由头部和字符串组成,头部包含了字符串的长度信息,字符串中可以包含嵌入的 null 值。BSTR 是以指针的形式进行传递的。(指针是一个变量,包含另外一个变量的内存地址,而不是数据。) BSTR 是 Unicode 的,即每个字符需要两个字节。BSTR 通常以两字节的 null 字符结束。…………摘自MSDN
      

  4.   

    谢谢各位,马上给分。这个贴子请大家关注一下 150分
    http://www.csdn.net/expert/TopicView.asp?id=316376