C++ 是否将LPCOLESTR转换为BSTR?

C++ 是否将LPCOLESTR转换为BSTR?,c++,bstr,C++,Bstr,关于如何用LPCOLESTR制作BSTR有什么想法吗?挂断电话是件愚蠢的事。一个LPCOLESTR只是一个const wchar\u t*,因此您可以使用创建一个BSTR: LPCOLESTR olestr = ...; BSTR bstr = SysAllocString(olestr); 完成BSTR后一定要打电话。另请参见一个LPCOLESTR只是一个常量wchar*,因此您可以使用创建一个BSTR: LPCOLESTR olestr = ...; BSTR bstr = SysAllo

关于如何用LPCOLESTR制作BSTR有什么想法吗?挂断电话是件愚蠢的事。

一个
LPCOLESTR
只是一个
const wchar\u t*
,因此您可以使用创建一个
BSTR

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

完成
BSTR
后一定要打电话。另请参见一个
LPCOLESTR
只是一个
常量wchar*
,因此您可以使用创建一个
BSTR

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

完成
BSTR
后一定要打电话。另请参见

BSTR和LPCOLESTR之间的区别在于,BSTR在字符串前面加上了字符串的长度前缀,而LPCOLESTR没有

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

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

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

BSTR和LPCOLESTR之间的区别在于BSTR在字符串前面加上字符串的长度前缀,而LPCOLESTR没有

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

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

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

请注意,只有在Wintel平台上,OLECHAR==wchar\u t才是正确的。不确定其他平台是什么,但这很有趣,在它们上面,BSTR也可能只是一个字符*,因此您的答案在所有实际用途上都是正确的;)请注意,OLECHAR==wchar\u t仅在Wintel平台上为真。不确定其他平台是什么,但这很有趣,在它们上面,BSTR也可能只是一个字符*,因此您的答案在所有实际用途上都是正确的;)