string的基本操作

在C++中,string 可以来定义一个字符串,用之前得调用下相应的库    #include<string>   

可以不用初始化字符串容量大小,系统会根据后续的赋值自动安排其容量大小。string 挺好用,如:

string  str1;

string str2 = "mother";  // str2[0] 表示的是字母‘m’。

str2 += "son";    // 表示直接将son加到str2的末尾

string是一个类,你可以调用相应库中的函数。如:

str2.size() 表示字符串str2的真实长度,str2.length()表示字符串str2的真实长度。两者没有区别

strcpy(str1, str2); 这是一个拷贝函数,将str2拷贝给str1。

 

用char * 的数组形式也能实现以上功能。头文件得调用   #include<cstring>

char charr1[20];

char charr2[20];

一个数组等于另一个数组不能直接赋值(!=)。

如果是复制,可以用  strcpy(charr1, charr2);         charr2复制给charr1。

如果是末尾插入。则可以  strcat(charr1, charr2),    将charr2插入到charr1的末尾。

求字符串数组的长度。则可  strlen(charr1)。      返回的就是字符串数组的真实长度。

字符串数组在定义的时候得确定容量,后期如果要插入的字符量大于其自身容量,会溢出,会崩溃。所以通过string 能方便些。

 

string又涉及一个深拷贝和浅拷贝的问题。

浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,

深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,

使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。

 

浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。

深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。

posted @ 2020-02-27 16:08  撑雨伞的小男孩  阅读(176)  评论(0编辑  收藏  举报