gpt4 book ai didi

c++ - 在通过 native 字符串创建 BSTR(使用 _bstr_t 包装器)时,如何设置长度?

转载 作者:行者123 更新时间:2023-11-30 03:01:49 25 4
gpt4 key购买 nike

创建 BSTR 时(使用 _bstr_t 作为包装类)我必须使用一些 constructors of _bstr_t .由于 BSTR 是可能包含空字符的长度前缀字符串,因此必须有可能使用 native 字符串创建这样的字符串,而不依赖于给定 native 字符串的空终止符。

举个例子:

wchar_t* pwNativeString = L"abc\0def\0\0ghi\0\0\0"; // + automatic "\0"

// Now I want to create a BSTR using _bstr_t by this string.
_bstr_t spBSTR = _bstr_t(pwNativeString);

问题在于构造函数依赖于 pwNativeString 的空终止。所以生成的 BSTR 只是 "abc" 而已。所以我的问题是:如何创建 BSTR_bstr_t 并将指针传递给具有特定长度的数组?在下面的伪-代码示例:

_bstr_t spBSTR = _bstr_t(pwNativeString, 15);

最佳答案

使用SysAllocStringLen分配 BSTR,然后使用双参数 _bstr_t 构造函数从中创建一个 _bstr_t 对象。如果将第二个参数设置为 true,则需要调用 SysFreeString之后。否则,_bstr_t 对象拥有该字符串并将为您释放它。

BSTR bstrIn = SysAllocStringLen(L"abc\0def\0\0ghi\0\0\0", 15);
_bstr_t spBSTR(bstrIn, false);

关于c++ - 在通过 native 字符串创建 BSTR(使用 _bstr_t 包装器)时,如何设置长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com