一 概述 本节课主要讲述char型数组的合并和string型字符串的合并
二 char型数组的合并 2.1 代码 1 2 3 4 5 6 7 8 9 10 11 12 #include<iostream> #include<cstring> using namespace std; int main() { char ch1[]="what's your name"; char ch2[]=" my name is Jack"; strcat(ch1,ch2); cout<<ch1<<endl; cout<<ch2<<endl; return 0; }
2.2 输出 1 2 what's your name my name is Jack my name is Jack
2.3 说明
char型数组的合并使用到了strcat函数
strcat是string catenate(字符串连接)的缩写。strcat函数将第2个字符串合并第1个字符串中,因此第1个字符串必须保证能容纳两个字符串的长度
三 string型字符串的合并 3.1 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<iostream> #include<cstring> using namespace std; int main() { string str1="what's your name"; string str2="my name is Jack"; str1=str1+str2; cout<<strlen(str1.c_str())<<endl; cout<<str1.length()<<endl; cout<<str1.size()<<endl; cout<<str1<<endl; string str3; cout<<"str3:"<<str3.size()<<endl; return 0; }
3.2 输出结果 1 2 3 4 5 31 31 31 what's your namemy name is Jack str3:0
3.3 说明
这是因为string类在设计时增加了一个特殊的功能,它会随着字符的增多或者减少自动调节数组的大小
我们知道查看char型字符串的长度用但是strlen这个函数,string型字符串也可以用这个函数,不过需要将string型字符串转换为char型字符串,也就是将对象转换为数组,然后才能使用,转换方式是调用string类的一个函数c_str(),转换后的这个数组带有一个字符串结束标志,也就是C风格的字符串。这样strleng函数才能正确地计算出字符串的长度,这个长度是可见字符的长度,不包括字符串结束标志
无论是使用strlen还是size,它们的目的都一样,就是计算结束符'\0'之前的字符共有多少个
由于未被初始化的string对象是个空对象,除了字符串结束标志外,没有填充任何数据,因此输出的结果为0
该方法与size方法的使用相同,输出结果也相同。为什么string类中假如两个相同的功能的函数呢?
这是因为length()函数时早期版本的string类中的成员,而size()函数则是以后添加进去的,为的是兼容STL,关于STL在模板那一章会做详细说明。这里只需要记住,size和length的区别就是在STL中