C++中关于string、char*、char[ ]的说明


预备小知识:

1、在C++中const char* 与char*的区别

由于const char*与char*相比有更高的等级限制(const),因此char*的数据可以赋给const char*,但是反过来,const char*不能赋值给 char*

 

总结来说就是,const char*可以由char*赋值和替代,换言之当一个函数的参数为const char*时,该位置也可以传入char*,反之不成立

 

2、在C++中”hello world”是一个const char*或者说是一个char [ ]的类型

3、字符数组可以通过C++的字符串赋值,字符指针不行(除非是const的字符指针)

 

 

正式开始:

C++中的string类是由STL标准模板库提供,在string类中提供了string对象的构造器、string对象的方法等等。

(1)string类的类对象赋初始值的方式

String类中的对象构造器的实质是传进了一个const char*的指针

默认构造,表示空字符串

 

直接赋值(”   ”本质就是const char*)

 

字符指针赋值(char*当然可以传给const char*)

 

字符数组赋值(数组名的本质也是const char*)

 

 

因此我们以函数的形参类型与传入的参数来得出string类对象、char*、char [ ]的关系如下

 

 

2021.12.5补充更新

补充一:今天发现当时的总结有误,无论是什么类型都不能被string的对象赋值,因为基础数据类型和string的类类型不能划等号,因此这也就是为什么无论以何种基础数据类型作为

形参,string对象无法传入的原因(本质原因)

补充二:const的问题只限于基础数据类型使用C++的字符串进行初始化的时候,因为C++的字符串是const char*类型的(“aasasas”),这里C++字符串而不是指字符串类型的对象


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM