关于C++标准程序库中String类的初始化,有以下几种方法:
1.用原有String对象初始化
2.用一个字符串常量进行初始化
string str1="123";
string str2(str1);
3.用一个字符数组指针初始化
char char_array[5]={'1','2','3','4'};
string str(char_array);
4.用原有字符串搭配substr操作
string str1="123456";
string str2(str1,0,3);
5.利用迭代器
string str1="123456";
string str2(str1.begin(),str1.end());
6.还有一种不知道有啥意义,构造函数第一个参数为字符拷贝数量,第二个参数为拷贝的字符
string str(9,'1');
关于substr函数:
substr函数第一个参数是开始位置,截取字符数目为第二个参数,两个参数都有默认值,无参的substr函数代表全部截取。当substr第一个参数越界时,会报out_of_range错误,第二个参数过大导致越界则不会报错,截取到最后一个字符
string str="123456";
cout<<str.substr(0,3)<<endl;//输出“123”
cout<<str.substr(0,9)<<endl;//输出“123456”
cout<<str.substr(9,9)<<endl;//报错
有用的两个函数:append()与size():
C++标准库为string类提供了一系列类似于容器的操作,其中str.append("append_string")代表向已有字符串后面添加字符,而size()与length()作用相同,即返回字符串长度。
两个不同的函数:insert()与replace():
insert函数使得可以向字符串任意位置添加字符,但是有可能会造成原有字符串的储存位置发生改变,而replace()则可以替换给定位置的字符,它可以结合find()使用,注意,不要把string的成员函数replace与泛型算法中的replace混淆。
在《C++编程剖析》中提到了at()与[ ]的区别:at会进行数组越界检查,如果越界则会返回out_of_range错误,而索引操作符则不会进行检查,一般建议使用at()来进行索引操作。这也适用于string类。
刚刚尝试写博文作为总结笔记,如有问题或说法不妥,恳请指正。