版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/89761350
一 string的构造函数说明
string s; //生成一个空字符串s
string s(str) //拷贝构造函数 生成str的复制品
string s(str, stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值
string s(str, stridx, strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值
e) string s(cstr) //将cstr字符串作为s的初值
f) string s(chars, chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num, c) //生成一个字符串,包含num个c字符
h) string s(beg, end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
二 关于字符串各个头文件的说明
1 <string.h>
<string.h>是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。
2 <cstring>
在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以string.h头文件成了cstring头文件。但是其实现却是相同的或是兼容以前的,这就是<cstring>的来源,不要觉得又多了一个东西。相当于标准库组织给它盖了个章,说“你也是我的标准程序库的一份子了”。
3 <string>
<string>是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但<string>又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在<string>的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。
三 string声明实战
1 代码
#include<iostream>
#include<string>
using namespace std;
int main(){
string str1="Spend all your time waiting.";
string str2="For that second chance.";
string str3(str1,6); //"all your time waiting."
string str4(str1,6,3); //"all"
char ch_music[]={"Sarah McLachlan"};
string str5=ch_music;
string str6(ch_music);
string str7(ch_music,5); //"Sarah"
string str8(4,'a');//aaaa
string str9(ch_music+6,ch_music+14); //" McLachlan"
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
cout<<"str3:"<<str3<<endl;
cout<<"str4:"<<str4<<endl;
cout<<"str5:"<<str5<<endl;
cout<<"str6:"<<str6<<endl;
cout<<"str7:"<<str7<<endl;
cout<<"str8:"<<str8<<endl;
cout<<"str9:"<<str9<<endl;
return 0;
}
2 运行
扫描二维码关注公众号,回复:
6198487 查看本文章
[root@localhost charpter03]# g++ 0302.cpp -o 0302
[root@localhost charpter03]# ./0302
str1:Spend all your time waiting.
str2:For that second chance.
str3:all your time waiting.
str4:all
str5:Sarah McLachlan
str6:Sarah McLachlan
str7:Sarah
str8:aaaa
str9:McLachla