14

有人知道如何将 BSTR 转换为 char* 吗?

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

char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
4

1 回答 1

18

你的代码没问题。ConvertBSTRToString就是这样做的。至于strcpy,testDest需要足够大以容纳 所指向的字符串p。请注意,由于 ConvertBSTRToString 分配了一个新字符串,因此您需要在后面的某个地方释放它。完成后,请确保您这样做:

delete[] p; 

不过有几点需要注意(您可以从BSTRMSDN 上的文档中看到):

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

因此,您strcpy 可能并不总是按预期工作。

于 2010-09-06T03:49:49.927 回答