大家都比较熟悉字符串相加操作,一般有这么几种情况:
1. 当两个字符串直接相加的时候,c#中通过建立中间临时对象,最终创建一个新的字符串,其值就是两个字符串的连接。
例如:在c#中,string str = “a" + "example" ;在c++,也是同样道理,字符串的相加操作。
2.当字符串和整型或者布尔类型相加。在c#中,我们知道每种类型就继承自object,而object都默认实现了toString()方法,这样当我么执行一个字符串和一个整型,或者其他非字符串类型的加法时,编译器会自动调用该对象的toString()方法,将其转换为字符串,然后执行两个字符串的加法。
但在c++中,当你直接把字符串和整型相加的时候,并不是上述结果。
例子:cout<<"test" + 3<<endl;
你们认为结果是什么呢?哈哈,肯定会令你吃惊。其实这个语句执行的是指针操作,相当于 headPointer + 3;这样的话,结果就是“t”。当数字过大而超越字符串的长度,这时候字符串就为空了。其实这个很简单,只是我们平时并没有注意。
希望这个对大家以后有所帮助。