题
关于如何从LPCOLESTR制作BSTR的任何想法?愚蠢的事情要挂掉......
解决方案
LPCOLESTR
只是const wchar_t*
,因此您可以使用 SysAllocString()
创建BSTR
:
LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);
请务必致电 SysFreeString()
用你的<=>完成。另请参阅关于<=> s的MSDN文档
其他提示
BSTR和LPCOLESTR之间的区别在于BSTR在字符串前面加上字符串的长度,LPCOLESTR没有。
BSTR不一定有一个结尾的\ 0标记字符串结尾,因为字符串的长度是前缀,转换我通常使用类CComBSTR(atlcomcli.h),ctor采用BSTR或LPCOLESTR作为参数和成员BSTR()来获取BSTR表示:
CComBSTR b( yourolestring )
// b.BSTR()
CComBSTR将处理分配/释放,因此没有内存泄漏的风险。
不隶属于 StackOverflow