前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-11-13-C++CLI的托管字符串std字符串和c字符串的转换

2019-11-13-C++CLI的托管字符串std字符串和c字符串的转换

作者头像
黄腾霄
发布2020-06-10 14:35:29
1K0
发布2020-06-10 14:35:29
举报
文章被收录于专栏:黄腾霄的博客

最近在搞C++/CLI,发现经常需要涉及字符串之间的传递和转换,因此记录下。


在C++/CLI中,我们可以接触到三种字符串std::string,System::string,cstring。这里我们分别称之为标准字符串,托管字符串和c语言字符串。

std::string 和 cstring

cstring是一个char数组,在string.h 中直接定义了c_str方法完成std::string 到 cstring的转换

这里获得的是一个char的指针常量,指向cstring数组

image-20191113085039110
image-20191113085039110

与此同时,string.h还定义了string构造函数从cstring构造std::string

image-20191113085405293
image-20191113085405293

System::String 和 cstring

由于c#中safe代码区域不会使用指针,所以cstring的表现为char数组。

System::String 中定义了ToCharArray方法可以获得char数组

image-20191113085828560
image-20191113085828560

同样可以使用System::String 的构造函数从char数组构造System::String

image-20191113090850730
image-20191113090850730

当然你也可以使用Marshal::StringToHGlobalAnsi或者Marshal::StringToHGlobalUni将其转换为char*或者wchar_t*

image-20191113091620246
image-20191113091620246

System::String 和std::string

std::string到System::String我没有直接的转换,直接使用cstring做中转

image-20191113092240396
image-20191113092240396

System::String到std::string或者std::wstring,可以使用marshal_context进行转换

image-20191113092444134
image-20191113092444134

参考文献:

How to: Convert Standard String to System::String - Microsoft Docs

c++ - convert a char* to std::string - Stack Overflow

How to: Convert System::String to Standard String - Microsoft Docs

How to: Convert System::String to wchar_t* or char* - Microsoft Docs


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/C++CLI%E7%9A%84%E6%89%98%E7%AE%A1%E5%AD%97%E7%AC%A6%E4%B8%B2std%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8Cc%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E8%BD%AC%E6%8D%A2.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • std::string 和 cstring
  • System::String 和 cstring
  • System::String 和std::string
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档