在C语言中,一般使用字符数组char str[]来存放字符串,但是使用字符数组有时会显得麻烦,C++在STL中加入了string类型,对字符串常用的需求功能进行了封装,使得操作起来更方便,且不易出错。
如果需要使用string ,需要添加string头文件,即#include<string> (注:string.h和string是不一样得头文件)
一、string定义
string str
赋值:
string str=“abcd”
二、string中内容的访问
(1)通过下标访问
#include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ string str="abcd"; for(int i=0;i<str.length();i++){ printf("%c",str[i]); } printf(" "); return 0; }
(2)通过迭代器访问
当使用insert()和erase()时,需要用迭代器为参数
定义:
string::iterator it;
访问:
#include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ string str="abcde"; string::iterator it; for(string::iterator it=str.begin();it!=str.end();it++){ printf("%c",*it); } printf(" "); return 0; }
输出:
abcde
三、string常用函数
(1)operator+=
这是string的加法,可以将两个string直接拼接起来
#include<algorithm> #include<iostream> #include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ string str1="abcde"; string str2="xuy"; string str3; str3=str1+str2; cout<<str3<<endl; printf(" "); return 0; }
输出:
abcdexuy
(2)compare operator
两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序
#include<algorithm> #include<iostream> #include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ string str1="abcde"; string str2="xuy"; if(str1<str2){ printf("str1<str2 "); } else if(str1>str2){ printf("str1>str2 "); } else{ printf("str1=str2 "); } // printf(" "); return 0; }
输出:
str1<str2
(3)length() / size()
返回string的长度
#include<algorithm> #include<iostream> #include<cstdio> #include<cstdlib> #include<string> using namespace std; int main(){ string str1="abcde"; // string str2="xuy"; printf("%d",str1.length()); printf(" "); return 0; }
输出:
5
(4)insert()
1. insert(pos,string) 在pos位置插入string字符串
2. insert(it,t2,t3) it为原字符串的欲插入位置,it2和it3为待插入字符串的首位迭代器,用来表示串[it2,it3)将被插入在it的位置上
(5)erase()
1.删除单个元素
str.erase(it)用于删除单个元素,it为需要删除的元素的迭代器
2.删除一个区间内的所有元素
str.erase(first,last) 其中first和last分别为需要删除区间的起始迭代器和末尾迭代器的下一个地址,也即删除[first,last)
(6)clear()
clear()用以清空string中的数据
(7)substr()
substr(pos,len)返回从pos号位开始,长度为len的子串
(8)string::npos
是一个常数,值为-1
(9)find()
str.find(str2),当str2是str子串时,返回其在str中第一次出现的位置,如果str2不是str的子串,那么返回string:npos
str.find(str2,pos) , 从str的pos号位开始匹配str2,返回值与上相同
(10)replace()
str.replace(pos,len,str2) 把str从pos号位开始,长度位len的子串替换为str2
str.replace(it1,it2,it3) 把str的迭代器[it1,it2)范围的子串替换为str2