将数组 <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>()
转换每个元素。
我是 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>()
转换每个元素。