string容器 (2022.9.12学习笔记)
最近每天都在刷力扣题,在刷题过程中发现自己对于STL库的组件使用还是不熟练,因此打算复习一下STL库的各个容器,今天从string开始复习起。
1、string介绍
string容器是一个类 这个容器中有一个指针,指针维护一个数组
封装了char,管理这个字符串,是一个char型的容器
常用功能:
查找find 拷贝copy 删除delete 替换replace 插入insert
2、string容器常用操作
2.1 string构造函数
string();//创建一个空的字符串 string str
string(const string& str);//使用一个string对象初始化另一个string对象
string(const char* s);//使用字符串s初始化
string(int n, char c);//使用n个字符c初始化v
string str;
string str1("hello");
string str2(str1);
string str3(5, 'k');
2.2赋值操作
string str("helloworld");
string str1("heihie");
str = str1;
str.assign(str1);
cout << str << endl;//输出helloworld
str.assign("hehe");
cout << str << endl;//输出hehe
str.assign("jack", 2);
cout << str << endl;//输出jack的前两个char型字符ja
str.assign(str1, 2, 3);//输出ihi从第2个字符起(含有第0个字符)起输3个
cout << str <<endl;//输出ihi
2.3存取字符串操作
string str("helloworld");
cout<<str[4]<<endl;
str[4]='c';
cout<<str.at(4)<<endl;
str[n] str.at(n)
2.4字符串拼接操作
str.append(str1)
str+=str2
str.append(str3,2) 拼接上str3的前两个
str(str4,3,2) 拼接上str3从第4个元素开始的2个
2.5字符串的查找和替换
find rfind
string str("helloworld");
string str1("wor");
cout << str.find(str1) << endl;//输出5
cout<<str.find("wor")<<endl;//输出5
cout << str.find("world",0,2) << endl;//从0开始查找world前两个元素的位置
cout<<str.rfind("lr")<<endl;//从右往左找第一个lr的位置 输出8
str.replace(2,4,str1)//从第2个位置替换 将4个字符替换成str1
2.6字符串的比较
compare函数在>时返回1,<时返回-1,==时返回0
int ret=str1.compare(str2)
str1>str2 返回1
str1<str2 返回-1
str1=str2 返回0
2.7string的子串
string substr(int pos=0,int n=pos);//返回从pos开始的n个字符组成的字符串
2.8string的插入和删除操作
string& insert(int pos,const char* s);//插入字符串
string$ insert(int pos,const string& str);//插入字符串
string& insert(int pos,int n ,char c);//从指定位置插入n个字符
string& erase(int pos,int n=npos);//删除从pos位置开始的n个字符
2.9string和char*的相互转化
string str("hello");
char* s = NULL;
s = const_cast<char*>(str.c_str());
cout << s << endl;