gpt4 book ai didi

c++ - 如何将值从 safearray 复制到 vector?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:39 35 4
gpt4 key购买 nike

我有一个电话返回 BSTR 的 safearray。我想把它复制到 vector<LPOLESTR> .正确的做法是什么?在这种情况下如何处理内存?

最佳答案

假设你想要 vector<wstring>毕竟,根据评论中的讨论,是这样的:

SAFEARRAY* sa;  // a safearray of BSTR, initialized somehow.

LONG lBound, uBound;
SafeArrayGetLBound(sa, 1, &lBound);
SafeArrayGetUBound(sa, 1, &uBound);
LONG count = uBound - lBound + 1; // bounds are inclusive

BSTR* raw;
SafeArrayAccessData(sa, (void**)&raw);

vector<wstring> v(raw, raw + count);
// or, if you want to assign to an existing vector
vector<wstring> v;
v.assign(raw, raw + count);

// When no longer need "raw".
SafeArrayUnaccessData(sa);

错误处理留给读者作为练习。

关于c++ - 如何将值从 safearray 复制到 vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22147575/

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