为了账号安全,请及时绑定邮箱和手机立即绑定

C++ CLR里的System::String和Std::String在使用和实现上有什么区别?各位有什么建议?

C++ CLR里的System::String和Std::String在使用和实现上有什么区别?各位有什么建议?

江户川乱折腾 2019-08-21 13:04:13
Std::String是C++标准库字符串类型,System::String是CLRC++中的类型,C#和CLRC++程序里都可以使用System::String。Std::String的好处是显然的,它是标准C++的一部分,其他系统比如Linux上也可以用Std::String.但是,如果我的程序只需要在Windows上运行,不需要在其他系统譬如Linux系统上运行,那么我是用System::String还是Std::String呢?照理说,微软既然在Std之外另搞了一个System::String,这个字符串类型比起标准String,也应该有其优点,到底有什么优点呢?除了C#也能用外,比起Std::String,有没有实际上的好处呢?

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

根本就是两回事啊。System::String是托管类,资源在托管堆里,功能是CLR提供的。std::string是本地类,资源在本地堆里,功能是C++runtime提供的。不是微软在std外面搞了一个自己的类,微软做C++/CLI就是为了衔接.net和C++,于是两个地方的东西都能用。但两者是不能直接替换的,互相之间是需要转换的。
至于你说不管linux平台该用哪个,其实C++/CLI到现在都是windows独占,你就算想在linux上用也不行。
最后你说编译出错的问题,那是因为你的写法在C++里通不过。C++里是需要include头文件的。
建议:没学过C++的话不要趟C++/CLI这趟浑水
                            
查看完整回答
反对 回复 2019-08-21
?
智慧大石

TA贡献1946条经验 获得超3个赞

想当年MFC的时候微软也封装过一些高级对象比如CString,好处就是更加适用于MFC的工作环境。这样的封装更多是提供现成的算法比如Qt也有QString,可以split,join简化代码。标准库就跟他的名字一样,它的工作环境与平台无关,可以用于windows,linux,macOS。而c#和CLIc++是微软的库,基于Windows开发的。
1.实际好处就是封装了更多现成方法处理字符串。2.使用命名空间之后不用声明作用域。3.写入输出流用<<操作符。
                            
查看完整回答
反对 回复 2019-08-21

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号