将BSTR转换为char*

bar*_*yee 14 c++ bstr char visual-c++

任何人都知道如何将BSTR转换为char*?

更新:我试图这样做,但不知道它是对还是错.

char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
Run Code Online (Sandbox Code Playgroud)

dir*_*tly 18

你的代码没问题.ConvertBSTRToString做到了那一点.至于strcpy,testDest需要足够大以容纳指向的字符串p.请注意,由于ConvertBSTRToString分配了一个新字符串,您需要将其释放到某个地方.完成后,请确保执行以下操作:

delete[] p; 
Run Code Online (Sandbox Code Playgroud)

但有几点需要注意(正如你BSTR在MSDN上的文档中看到的那样):

  • 在Microsoft Windows上,由一串Unicode字符(宽字符或双字节字符)组成.
  • 可能包含多个嵌入的空字符.

因此,您strcpy 可能无法始终按预期工作.