社区
C#
帖子详情
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
打赏
收藏
c#中string型和c++string型的区别
在c#中调用c++的dll,在c#中向里面传入string型参数,结果进入dll调试发现穿进去的字符串变了,咋回事? [DllImport("PEKS.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] static extern void Enc(string plain);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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/
C#
中
的
string
转换成
C++
中
的char[ ]
在日常的编程
中
,常常遇到
C#
和
C++
联合编程,在这过程
中
就可能遇到从
C#
中
把
string
类
型
的数据传到
C++
的dll文件
中
,对应的在
C++
中
是char[ ]类
型
。(
C#
中
的char[ ]对应
C++
中
的wchar_t[ ] )代码如下: 在
C#
中
: unsafe { fixed( char* p = &(stress.ToCharArray()[0])) { Write
String
§; ...
C++
与
C#
中
字符串的
区别
string
类在
C++
与
C#
中
都是一种经常使用的类
型
,对字符串的操作比对字符数组的操作方便很多,今天在这里记录一下
C++
和
C#
中
的
string
的
区别
与注意事项。 在
C++
中
,
string
的每一个字符串的结尾都是字符'\0',因此字符串的占用的内存比表面上使用的字节数多一。在
C++
中
需要注意的是,
C++
将const字符串保存在常量存储区,当多个指针指向同一个const字符串时,者几个指针指向的内存...
C#
中
String
和
string
的
区别
在
C#
编程
中
,
string
和
String
本质上是相同的,
string
是
C#
为System.
String
提供的关键字别名。两者在编译后没有性能差异,但使用场景有所不同:
string
常用于变量声明,更符合
C#
语法风格,而
String
适用于调用System.
String
的静态方法。在项目
中
保持一致性,遵循代码规范,并考虑跨语言兼容性,是使用这两种形式的最佳实践。
C#
提供
string
别名旨在提高代码的可读性和简洁性,便于开发者从其他语言过渡。
C++
调用
C#
库用到的几个类
型
转换:
C++
string
转换成
C#
的
String
,
C++
string
转
C#
的byte
Program为
C#
dll
中
定义的类,需要调用它里面的接口 Program^ c = gcnew Program(); 1.
C++
string
转换成
C#
的
String
string
recv_buf2;
String
^ inifile = gcnew
String
(recv_buf2.c_str()); c->open_camera(inifile); 2.
C++
string
转
C#
的byte
string
recv_devaddr="0x18"; BYTE devaddr; bool result
c#
string
与
c++
std::
string
的互相转换
本文转载自:
C#
DLL托管
c++
(CLI)
String
^ 到 std::
string
的相互转化_成魔的羔羊的博客-CSDN博客当使用
C++
/CLI包装
C++
本地代码时,常常需要将System::
String
转换为std::
string
或者char*以调用native
C++
函数。.net环境
中
的字符串是unicode的,占2个字节,而很多native
C++
函数都没有考虑unicode,这种转换不仅仅是2字节转1字节,同时也涉及到字符集的转换。...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章