2.1 string容器介绍
string也属于STL常用容器之一,因此vector(参考博客)中的大部分方法与迭代器都适用于string容器。string容器用于保存字符串,使用一组连续的内存单元来存放字符串中的每个字符,因此也支持随机访问与存储。c++中string完全可以替代字符数组和字符指针,下面主要介绍string容器独有的方法。
2.2 string容器的创建与使用
2.1.1 包含头文件
#include<string.h> //c语言中的库文件,提供了各种字符串操作函数
#include<string> //c++中提供了string
2.1.2 string的构造与访问
/***string的构造方法***/
char ch[30];
char ch1[30] = "laina";
char* ch_ptr = ch1;
string str = "laina"; //默认构造方法
string str1(str); //初始化为str的副本
string str2("baga"); //初始化为传入字符串的副本
string str3(2, 'b'); //初始化为2个‘b’的副本
string str4(ch_ptr, 3); //初始化为所指数组的前n个字符
string str5(str1, 2); //初始化为str1从下标2开始的字符副本
string str6(str1, 2, 3); //初始化为str1从下标2开始的3个字符
string str7(str.begin() + 1, str.end()); //使用迭代器初始化
string str = "laina";
string str1 = "hello world!\n";
cout<<"print str1: ";
for(int i = 0;i<str1.length();i++){
cout<<str1[i];
}
3.1.2 string字符串拼接
-
使用“+=”进行拼接
-
使用append进行追加:str.append(str2,0,3) //从第0个字符开始截取,截3个字符。
//第一种拼接方法
string str_temp = str + " " + str1;
cout << "str + \" \" + str1 : "<< str_temp << endl;
//第二种拼接方法
str_temp.append(str1);
cout << "str.append(str1): " << str_temp << endl;
str_temp.append(str, 3, 2);
cout << "str.append(str, 3, 2): " << str_temp << endl; //从序号为3个字符开始截取,截2个字符。
3.1.3 string字符串拼接
//字符串查找
int pos = str.find("na"); //没有该字符则返回s.npos(int)
cout << "position of na:\t\t" << pos << endl;
//字符串的替换
str1.replace(pos, 4, "naa"); //从表示从str1[pos]的下一个字符开始,将后面的4个字符替换为“naa”
3.1.4 string字符串比较
//逐位比较字符串的ascii码,完全相同返回0,假设第i位不同,若str[i]>str1[i]返回1,否则返回-1
cout<<"strcmp(str1.c_str(), str.c_str())= "<<strcmp(str1.c_str(), str.c_str())<<endl;
3.1.5 string字符串截取
str1 = str1.substr(2,5); //从str1[2]开始截取5个字符
3.1.6 string迭代器的使用
#include<iostream>
#include <string>
using namespace std;
int main()
{
string ss("zhoujielun");
string s(ss.rbegin(), ss.rend());
cout << endl;
cout << "zhoujielun的逆序: " << s << endl;
return 0;
}
3.1.7 string的一些其他方法
//strnlen(str,n) =>比较str的实际长度与n值,若length<n,则返回实际长度,否则返回n值
cout << "strnlen(str.c_str(), 3): " << strnlen(str.c_str(), 3) << endl;
//strchr(str,char s) =>返回第一次出现字符s的指针
cout << "strchr(str.c_str(), 'a'): " << strchr(str.c_str(),'a');