将C ++ / CLI String Array转换为字符串向量

时间:2014-08-11 12:19:05

标签: arrays string vector c++-cli

我在C ++ / CLI中有一个参数如下:

array<String^>^ list

我希望能够将其转换为字符串向量。

我该怎么做呢?使用C ++ / CLI并不像我想的那样好。

1 个答案:

答案 0 :(得分:4)

MSDN提供了有关如何编组数据的一些细节。它们还为msclr::marshal_as w.r.t提供了一些标准实现。 std::string

cli::array稍微复杂一点,这里的一般情况的关键是首先pin数组(这样我们就不会让它背后移动)。对于String^转化,marshal_aspin 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;
}