任何人都知道如何将BSTR转换为char *?
更新:我试图这样做,但不知道它是对还是错。
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
答案 0 :(得分:18)
您的代码没问题。 ConvertBSTRToString
就是这么做的。对于strcpy
,testDest
需要足够大以容纳p
指向的字符串。请注意,由于ConvertBSTRToString分配了一个新字符串,您需要将其释放到某个地方。一旦完成,请确保:
delete[] p;
但有几点需要注意(从BSTR
documentation on MSDN可以看到):
- 在Microsoft Windows上,由一串Unicode字符组成(宽或或 双字节字符)。
- 可能包含多个嵌入的空字符。
因此,您的strcpy
可能不会始终按预期工作。