c#中string型和c++string型的区别

pxy_leo 2012-04-24 10:22:12
在c#中调用c++的dll,在c#中向里面传入string型参数,结果进入dll调试发现穿进去的字符串变了,咋回事?
[DllImport("PEKS.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
static extern void Enc(string plain);
...全文
895 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xboxeer 2012-04-24
  • 打赏
  • 举报
回复
原生C++里面的string相当于C#里面的stringbuilder,本质上是个char[] 长度不一定等于你实际的字符串长度 后面有几个char[]空出来给后面的字符的 所以c++里面字符串相加实际上还是在同一个实例上面
c#的字符串是有一个字符串驻留机制 两个字符串相加再赋值到其中一个字符串上面 实际上有三个实例出来
pxy_leo 2012-04-24
  • 打赏
  • 举报
回复
哦哦~了解了原来是这样~,我改成char*调用了,可以用了
qldsrx 2012-04-24
  • 打赏
  • 举报
回复
C++里面的个人自定义类型,包括你说的string,都有定义的代码,你需要贴出来对比,我在C#里面也可以写一个自己的string类,你要问我自定义的一个名叫string 的类和C#自带的string类有啥区别,不看类的定义怎么知道?
cheng2005 2012-04-24
  • 打赏
  • 举报
回复
C++的string 是C++自己的类,不属于可以被外界调用的类型。
pxy_leo 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:
引用 1 楼 的回复:

http://blog.163.com/xiaozhi797@126/blog/static/62440288201231341344512/

上面并没有关于string类型在c#中的转换啊。我尝试将c#中的string类型传入c++中,结果发现参数字符串变了

C++里有string吗?我out了。
[/Quote]

嗯有的,各种string给我都搞乱了
cheng2005 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:

http://blog.163.com/xiaozhi797@126/blog/static/62440288201231341344512/

上面并没有关于string类型在c#中的转换啊。我尝试将c#中的string类型传入c++中,结果发现参数字符串变了
[/Quote]
C++里有string吗?我out了。
pxy_leo 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

http://blog.163.com/xiaozhi797@126/blog/static/62440288201231341344512/
[/Quote]
上面并没有关于string类型在c#中的转换啊。我尝试将c#中的string类型传入c++中,结果发现参数字符串变了
qldsrx 2012-04-24
  • 打赏
  • 举报
回复
非托管的C++里面就不存在string,谈何区别?
cheng2005 2012-04-24
  • 打赏
  • 举报
回复
http://blog.163.com/xiaozhi797@126/blog/static/62440288201231341344512/

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧