我在C ++ / CLI中有一个参数如下:
array<String^>^ list
我希望能够将其转换为字符串向量。
我该怎么做呢?使用C ++ / CLI并不像我想的那样好。
答案 0 :(得分:4)
MSDN提供了有关如何编组数据的一些细节。它们还为msclr::marshal_as
w.r.t提供了一些标准实现。 std::string
。
cli::array
稍微复杂一点,这里的一般情况的关键是首先pin
数组(这样我们就不会让它背后移动)。对于String^
转化,marshal_as
会pin
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;
}