【发布时间】:2009-08-01 23:33:19
【问题描述】:
关于如何用 LPCOLESTR 制作 BSTR 有什么想法吗?挂断电话的傻事..
【问题讨论】:
关于如何用 LPCOLESTR 制作 BSTR 有什么想法吗?挂断电话的傻事..
【问题讨论】:
LPCOLESTR 只是一个const wchar_t*,因此您可以使用SysAllocString() 创建一个BSTR:
LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);
完成BSTR 后,请务必致电SysFreeString()。另见MSDN documentation on BSTRs
【讨论】:
BSTR 和 LPCOLESTR 的区别在于 BSTR 在字符串前面有字符串的长度,而 LPCOLESTR 没有。
BSTR 不一定有一个结尾 \0 标记字符串的结尾,因为字符串的长度是前缀的,要转换我通常使用 CComBSTR 类(atlcomcli.h),ctor 将 BSTR 或 LPCOLESTR 作为参数并且有一个成员 BSTR() 来获取 BSTR 表示:
CComBSTR b( yourolestring )
// b.BSTR()
CComBSTR 将处理分配/释放,因此没有内存泄漏的风险。
【讨论】: