首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在托管代码和非托管代码之间转换

在托管代码和非托管代码之间转换
EN

Stack Overflow用户
提问于 2011-06-19 20:04:58
回答 2查看 1.2K关注 0票数 0

我想知道以下内容是否适用于在托管字符串和标准字符串之间进行转换:

代码语言:javascript
复制
String ^ mymgdstring;
std::string mystdstring = *[PTR TO MYMGDSTRING, NOT SURE OF SYNTAX]

(即创建一个标准字符串,该字符串等于指向托管字符串的已取消引用的指针)

如果这是无效的,为什么不呢?在它们之间进行转换的最佳方法(即最有效)是什么?

另外,如何获取指向托管字符串的指针?

EN

回答 2

Stack Overflow用户

发布于 2011-06-19 22:06:17

复制是必要的,因为.NET字符串数据可以在垃圾收集期间到处移动。

您可以假定marshal_as是完成此转换的最有效方法。如果找到了更快的方法,marshal_as将被更新以使用它(它是一个模板,可以是专门化的)。

您可以使用PtrToStringChars获取指向System::String (它将是Unicode格式,这是.NET字符串的内部格式)的数据的内部指针。要在本机代码中使用它,必须首先使用pin_ptr而不是interior_ptr来固定字符串。

票数 1
EN

Stack Overflow用户

发布于 2011-06-19 20:16:11

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6402241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档