首页 > 解决方案 > 转换数组到 std::string*

问题描述

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

无效函数A(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

解决方案


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

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


推荐阅读