谈c++ 和 c#关于字符串和其它类型的相加操作
2014-02-17 01:01
309 查看
大家都比较熟悉字符串相加操作,一般有这么几种情况:
1. 当两个字符串直接相加的时候,c#中通过建立中间临时对象,最终创建一个新的字符串,其值就是两个字符串的连接。
例如:在c#中,string str = “a" + "example" ;在c++,也是同样道理,字符串的相加操作。
2.当字符串和整型或者布尔类型相加。在c#中,我们知道每种类型就继承自object,而object都默认实现了toString()方法,这样当我么执行一个字符串和一个整型,或者其他非字符串类型的加法时,编译器会自动调用该对象的toString()方法,将其转换为字符串,然后执行两个字符串的加法。
但在c++中,当你直接把字符串和整型相加的时候,并不是上述结果。
例子:cout<<"test" + 3<<endl;
你们认为结果是什么呢?哈哈,肯定会令你吃惊。其实这个语句执行的是指针操作,相当于 headPointer + 3;这样的话,结果就是“t”。当数字过大而超越字符串的长度,这时候字符串就为空了。其实这个很简单,只是我们平时并没有注意。
希望这个对大家以后有所帮助。
1. 当两个字符串直接相加的时候,c#中通过建立中间临时对象,最终创建一个新的字符串,其值就是两个字符串的连接。
例如:在c#中,string str = “a" + "example" ;在c++,也是同样道理,字符串的相加操作。
2.当字符串和整型或者布尔类型相加。在c#中,我们知道每种类型就继承自object,而object都默认实现了toString()方法,这样当我么执行一个字符串和一个整型,或者其他非字符串类型的加法时,编译器会自动调用该对象的toString()方法,将其转换为字符串,然后执行两个字符串的加法。
但在c++中,当你直接把字符串和整型相加的时候,并不是上述结果。
例子:cout<<"test" + 3<<endl;
你们认为结果是什么呢?哈哈,肯定会令你吃惊。其实这个语句执行的是指针操作,相当于 headPointer + 3;这样的话,结果就是“t”。当数字过大而超越字符串的长度,这时候字符串就为空了。其实这个很简单,只是我们平时并没有注意。
希望这个对大家以后有所帮助。
相关文章推荐
- Before the Running of C/C++ Programs
- C++ 读取PE文件并十六进制打印输出
- Dlib C++ 算法库
- c/c++经典面试试题及标准答案(一)
- 对于VC++报错:fatal error C1001: INTERNAL COMPILER ERROR
- 2012 蓝桥杯【初赛试题】卖鸡蛋
- C/C++ 微软面试题剖析
- C++11 std - auto
- 2012蓝桥杯【初赛试题】 巧排扑克牌
- c++11 std - nullptr
- LeetCode 1 — Two Sum(C++ Java Python)
- 读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第三部分)
- 读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第二部分)
- C++对象模型
- 读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第一部分)
- c语言基础之指针
- 使用安全的库增强C++代码的安全性
- c++ protected成员及继承
- PMVS学习中学习c++
- C语言数据类型转换详解