我在 C++/CLI 中有一个参数,如下所示:
array<String^>^ list
我希望能够将其转换为字符串向量。
我该怎么做呢?对于 C++/CLI 的使用没有我想要的那么好。
MSDN http://msdn.microsoft.com/en-us/library/bb384865.aspx提供有关如何整理数据的一些详细信息。他们还提供了一些标准实现msclr::marshal_as
w.r.t. std::string
.
The cli::array
有点复杂,这里一般情况的关键是pin
首先是数组(这样我们就不会让它在我们背后移动)。在这种情况下String^
转换,即marshal_as
will pin
the String
适当地。
代码的要点是:
vector<string> marshal_array(cli::array<String^>^ const& src)
{
vector<std::string> result(src->Length);
if (src->Length) {
cli::pin_ptr<String^> pinned = &src[0]; // general case
for (int i = 0; i < src->Length; ++i) {
result[static_cast<size_t>(i)] = marshal_as<string>(src[i]);
}
}
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)