谈c++ 和 c#关于字符串和其它类型的相加操作

大家都比较熟悉字符串相加操作,一般有这么几种情况:

1. 当两个字符串直接相加的时候,c#中通过建立中间临时对象,最终创建一个新的字符串,其值就是两个字符串的连接。

例如:在c#中,string str = “a" + "example" ;在c++,也是同样道理,字符串的相加操作。

2.当字符串和整型或者布尔类型相加。在c#中,我们知道每种类型就继承自object,而object都默认实现了toString()方法,这样当我么执行一个字符串和一个整型,或者其他非字符串类型的加法时,编译器会自动调用该对象的toString()方法,将其转换为字符串,然后执行两个字符串的加法。

但在c++中,当你直接把字符串和整型相加的时候,并不是上述结果。

例子:cout<<"test" + 3<<endl;

你们认为结果是什么呢?哈哈,肯定会令你吃惊。其实这个语句执行的是指针操作,相当于 headPointer + 3;这样的话,结果就是“t”。当数字过大而超越字符串的长度,这时候字符串就为空了。其实这个很简单,只是我们平时并没有注意。

希望这个对大家以后有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值