gpt4 book ai didi

c++ - std::vector 和 _variant_t 之间的转换

转载 作者:行者123 更新时间:2023-11-30 00:57:53 26 4
gpt4 key购买 nike

我需要在 std::vector 之间进行转换和 _variant_t将数据写入/发送到某些文件(数据库、Excel 等)时避免循环

你能告诉我如何进行吗?

我想得到一个 std::vector<_variant_t>并以某种方式放入另一个_variant_t变量,但不支持直接转换,即使完成了,也没有任何方法或某种包装器可以将此 vector 转换为 _variant_t变量。

我宁愿不处理任何循环。

最佳答案

std::vector_variant_t 是不兼容的类型。 _variant_t 类型旨在支持 COM 接口(interface)需要为相同参数支持多种类型的值的情况。它的一组值仅限于 COM 了解如何编码的值。 std::vectory 不是这些类型之一。

将值集合存储到 _variant_t 中的标准方法是将其作为安全数组进行存储。因此,最简单的解决方案是将 std::vector 转换为安全数组并将其存储在变体中。这里真的没有办法避免循环

// Convert to a safe array
CComSafeArary<INT> safeArray;
std::vector<int> col = ...;
for (std::vector<int>::const_iteator it = col.begin(); it != col.end(); it++) {
safeArray.Add(*it);
}

// Initialize the variant
VARIANT vt;
VariantInit(&vt);
vt.vt = VT_ARRAY | VT_INT;
vt.parray = safeArray.Detach();

// Create the _variant_t
_variant_t variant;
variant.Attach(vt);

关于c++ - std::vector 和 _variant_t 之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7261258/

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