string的常见用法
在C语言中,一般使用char str[]数组来存放字符串,但是为了更方便简单地操作字符串,C++引入了STL中的string类型,对字符串常用的需求功能进行了封装。
使用string,需要添加头文件
#include<string>
,还要加上
using namespace std;
string的定义
与基本数据类型相同:
string str;
如果是进行初始化:
string str = "abcd";
string中内容的访问
通过下标访问
一般来说,可以直接像字符数组那样去访问string:
for(int i =0;i<str.length();i++){
printf("%c",str[i]);
}
如果要读入和输出整个字符串,只能使用cin和cout。
string str;
cin>>str;
cout<<str;
string类型str通过使用c_str()变为字符数组,之后可以使用printf("%s")输出。
通过迭代器访问
string的迭代器定义:
string::iterator it;
这样可以通过迭代器it的*it来访问string中的每一位。string和vector一样可以使用迭代器+整数的形式访问。
string的常见函数
- 操作符+=
这是string的加法,可以将两个string直接拼接起来
str1 += str2;
- 比较操作符
两个string类型可以直接使用==、!=、<、>、<=、>=比较大小,比较规则是字典序。 - length() / size()
返回string的长度,即存放的字符数。 - insert()
①insert(pos,string),在pos位置插入string字符串。
string str = "abcxyz",str2 ="opq";
str.insert(3,str2);//abcopqxyz
②insert(it,it2,it3),it为原字符串的预插入位置,it2和it3为待插字符串的收尾迭代器,用来表示串[it2,it3)将被插入在it的位置上。
string str = "abcxyz",str2 = "opq";
str.insert(str.begin()+3,str2.begin(),str2.end());
- erase()
erase()有两个用法:①删除单个元素;②删除一个区间内的所有元素,同vector。
增加了一个新的区间删除用法:str.erase(pos,length);
pos为删除的起始位置,length为删除的字符长度。 - clear()
用以清空string中的数据。 - substr()
substr(pos,len),返回从pos号位开始、长度为len的字串。 - string::npos
string::npos为一个常数,其本身的值为-1。string::npos用以作为find函数失配时的返回值。 - find()
str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果不是子串,返回string::npos
str.find(str2,pos),从str的pos号位开始匹配str2,返回值同上。 - replace()
str.replace(pos,len,str2)把str从pos号位开始,长度为len的子串替换为str2.
str.replace(it1,it2,str2)把str的迭代器[it1,it2)范围的子串替换为str2。