【发布时间】:2011-04-08 14:38:53
【问题描述】:
有人知道如何将 BSTR 转换为 char* 吗?
更新:我试过这样做,但不知道是对是错。
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
【问题讨论】:
标签: c++ visual-c++ char bstr
有人知道如何将 BSTR 转换为 char* 吗?
更新:我试过这样做,但不知道是对是错。
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
【问题讨论】:
标签: c++ visual-c++ char bstr
您的代码没问题。 ConvertBSTRToString 就是这样做的。至于strcpy,testDest 需要足够大以容纳p 指向的字符串。请注意,由于 ConvertBSTRToString 分配了一个新字符串,因此您需要在后面的某个地方释放它。完成后,请确保您这样做:
delete[] p;
但有几点需要注意(正如您从 BSTR documentation on MSDN 中看到的那样):
- 在 Microsoft Windows 上,由一串 Unicode 字符(宽或 双字节字符)。
- 可能包含多个嵌入的空字符。
所以,您的strcpy 可能不会总是按预期工作。
【讨论】: