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)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,
使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。
浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。
深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。