1

关于如何用 LPCOLESTR 制作 BSTR 的任何想法?愚蠢的事情要挂断..

4

2 回答 2

5

AnLPCOLESTR只是 a const wchar_t*,因此您可以使用它SysAllocString()来创建BSTR

LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);

SysFreeString()完成后请务必致电BSTR。另请参阅s上的 MSDN 文档BSTR

于 2009-08-01T23:37:12.917 回答
3

BSTR 和 LPCOLESTR 的区别在于 BSTR 在字符串前面有字符串的长度,而 LPCOLESTR 没有。

BSTR 不一定有一个结尾 \0 标记字符串的结尾,因为字符串的长度是前缀的,要转换我通常使用类 CComBSTR (atlcomcli.h),ctor 将 BSTR 或 LPCOLESTR 作为参数并在那里是成员 BSTR() 以获取 BSTR 表示:

CComBSTR b( yourolestring )
// b.BSTR()

CComBSTR 将处理分配/释放,因此没有内存泄漏的风险。

于 2009-08-02T12:04:56.510 回答