将数组 <System::string^> 转换为 std::string*

Converting array<System::string^> to std::string*

我是 C++/Cli 的新手,实际上在 C# 项目中我有 string[] 已转换为数组,现在我需要将此非托管数组传递到本机 CPP 文件中,即我想将此 "array" 到 std::string*。我该怎么做。我在下面试过这个:

void functionA(cli::array^varA){

cli::pin_ptr<System::String^>varA_value = &varA[0];
    std::string* varA_value_final = varA_value;

}

但它给出错误提示:cli::pin_ptr 类型的值不能用于初始化 std::string*

类型的实体

托管 class System::String 与非托管 class std::string 完全不同。 classes完全不同,存储的数据也完全不同。您无法获得指向一个的指针并假装它是另一个。

迭代 cli::array<System::String^>,转换每个元素,并将结果粘贴到 std::vector<std::string> 或其他非托管容器中。获取指向第一个元素的指针。使用 marshal_as<std::string>() 转换每个元素。