std :: vector和_variant_t之间的转换

1 c++ com variant stdvector

我需要在写入/发送数据到某个文件(数据库,Excel等)时进行转换std::vector_variant_t避免循环

你能告诉我怎么办吗?

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

我宁愿不处理任何循环.

Jar*_*Par 6

A std::vector_variant_t是不兼容的类型.该_variant_t类型旨在支持COM接口需要支持相同参数的多种类型值的场景.它的一组值仅限于COM了解如何编组的值. std::vectory不属于这些类型之一.

将值集合存储到a中的标准方法_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);
Run Code Online (Sandbox Code Playgroud)