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

问题描述 投票:0回答:1

我是C++Cli的新手,实际上在C#项目中我有string[],我把它转换为数组,现在我需要把这个未管理的数组传递到本地CPP文件中,即我想把这个 "数组 "转换为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*类型的实体。

c# c++-cli
1个回答
1
投票

管理类 System::String 与非管理类完全不同 std::string. 这些类是完全不同的,存储的数据也完全不同。你不能得到一个指针然后假装是另一个。

遍历 cli::array<System::String^>,将每个元素进行转换,并将结果粘在一个叫做 std::vector<std::string> 或其他非管理容器。抓取指向第一个元素的指针。使用 marshal_as<std::string>() 来转换每个元素。

© www.soinside.com 2019 - 2024. All rights reserved.