c# - 转换数组到 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* 类型的实体
解决方案
托管类System::String
与非托管类完全不同std::string
。这些类完全不同,存储完全不同的数据。你不能得到一个指针并假装它是另一个。
遍历cli::array<System::String^>
,转换每个元素,并将结果粘贴到一个std::vector<std::string>
或其他非托管容器中。获取指向第一个元素的指针。用于marshal_as<std::string>()
转换每个元素。
推荐阅读
- asp.net-core - 如何在 ASP.NET CORE 的 CheckBox 中获取所选项目 id 的值?
- javascript - 使用子组合器时,从 HTML 字符串解析 CSS 的正则表达式失败
- r - 在ggplot的上边距添加垂直文本
- python - 从 excel 文件中读取 PyQT 中的数据时出错:GtkDialog 映射时没有临时父级。这是不鼓励的
- python - 2020-10-16 21:53:19 [scrapy.core.scraper] 错误:Spider 必须返回请求、项目或无,得到“str”
- excel - 总天数小时和分钟
- python - 在简单的python脚本中导入熊猫后出错
- amp-html - 在官方 AMP 网站上,动画显示控制台错误
- python - 如何匹配'**'?
- javascript - 使用 removeClass 从列表项单击锚链接中删除类