STL笔记总结-string

 

1.string的定义。
定义string的方式跟基本数据类型相同,只需要在string后跟上变量名即可:
string str;
如果要初始化,可以直接给string类型的变量进行赋值:
string str="abcd";
2.string中内容的访问。
(1)通过下标访问
一般来说,可以直接像字符数组那样去访问string。
(2)通过迭代器访问。
定义:string ::iterator it。
string str="abcd";
for(string : :iterator it=str.begin();it!=str.end();it++)
printf("%c",*it)
3.string常见函数实例解析。
(1)operator+=
这是string的加法,可以将两个string直接拼接起来。
string str1="abc",str2="xyz";
str1+=str2;//将str2直接拼接到str1上。
cout<<str1<<endl;
输出结果:abcxyz
 (2)compare operator
两个string类型可以直接使用=,!=,<,>=比较大小,比较规则是字典序。
(3)length()/size()
length()返回string的长度,size()与length()基本相同。
(4)insert()
第一种:insert(pos,string)在pos号位置插入字符串string。
string str="abcxyz",str2="opq";
str.insert(3,str2);//往str[3]处插入opq,这里str2的位置直接写"opq"也是可以的。
输出结果: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() );
输出结果:abcopqxyz
(5)erase()
erase()有两种用法:删除单个元素、删除一个区间内的所有元素。
删除单个元素:
str.erase(it)用于删除单个元素,it为需要删除的元素的迭代器。
string str="abcdefg";
str.erase(str.begin()+4);//删除4号位(即e)。
输出结果:abcdfg
删除一个区间内的所有元素:
str.erase(first,last):
first为需要删除的区间的起始迭代器,last为需要删除的区间的末尾迭代器的下一个地址,即删除[first,last).
string str="abcdefg";
str.erase(str.begin()+2,str.end()-1);
输出结果:abg.
str.erase(pos,length):
其中pos为需要开始删除的起始位置,length为删除的字符个数。
string str="abcdefg";
str.erase(3,2);//删除从3号位开始的2个字符,即de。
输出结果:abcfg.
(6) clear()
clear()用以清空string中的数据。
(7)substr()
substr(pos,len)返回从pos号开始,长度为len的子串。
string str="Thank you for your smile.";
cout<<str.substr(0,5)<<endl;
cout<<str.substr(14,4)<<endl;
cout<<str.substr(19,5)<<endl;
输出结果:Thank
                 your
                 smile
(8) string::npos
string::npos是一个常数,其本身的值为-1,但由于是unsigned_int类型,因此实际上也可以认为是unsigned_int类型的最大值。
string::npos用以作为find函数失配时的返回值。可认为string::npos等于-1或4294967295.
(9)find()
str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果str2不是str的子串,那么返回string::npos。
str.find(str2,pos) 从str的pos号位开始匹配str2,返回值与上相同。
string str ="Thank you for your smile";
string str2="you";
if(str.find(str2)!=string ::npos)
cout<<str.find(str2)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是蒸的c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值