那么这篇文章我们开始学习 c嘎嘎的string

stl简介

什么是stl

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架

stl版本

原始版本、P.J.版本、RW版本、SGI版本

stl的六大组件

string的相关知识点

几个重要的接口

无参构造:string s1();

拷贝构造: string s2(s1);

带参构造: string  s3("111");

string s3(size_t n, char c); 作用:string类对象中包含n个字符c

由于string有流插入和流提取因此我们可以直接使用cin和cout

string的一些操作

string类对象的容量操作

size/length   :返回字符串的有效长度

capacity :返回空间总大小

empty :检测字符串是否为空

clear :清空有效字符

reserve:预留空间

resize : 将有效字符的个数该成n个,多出的空间用字符c填充

以上的类对象容量使用的语法格式均为:对象名.函数名();

string类对象的访问及遍历操作

operator[]   :返回pos位置的字符

begin  end  : begin获取一个字符的迭代器 + end获取最后一个字符下一个位 置的迭代器

rbegin  ren  : begin获取一个字符的迭代器 + end获取最后一个字符下一个位 置的迭代器

string类对象的修改操作

puch_back    :   尾插字符

append   :  尾插字符

operator +=  :在字符串后追加字符串

c_str     :    返回C格式字符串

insert    :    选择位置插入         语法格式: 对象名.函数名(插入位置, 插入的字符串);

erase    :    删除字符     

erase的三种使用方式        

1. 指定删除

语法格式: s.erase(位置,删除个数);

拓展:s.erase(位置)   注意:这行代码的意思是删除第几个位置后的所有字符

2.头删

语法格式:s.erase(s.begin());

3.尾删

语法格式: s.erase(--s.end());

replace  :替换字符    语法格式: 对象名.replace(位置,替换个数, 替换内容);

那么这里大家需要注意一下:如果替换的内容要多余替换个数,则后面的字符串会后移

find   语法格式: 对象名.find("查找的内容");

 rfind   :从字符串pos位置开始往前找字符,返回该字符在字符串中的位置

substr   :在str中从pos位置开始,截取n个字符,然后将其返回

语法格式:对象名.substr(复制的第一个字符的位置, 字符串的长度);注意若省略字符串的长度,则到最后一个字符为止

insert

遍历string三种方式

1. 下标遍历

直接上例子:

eg.

string s2("hello world");

for( size_t  i = 0; i < s2.size(); i++)

{
    cout  <<  s[i]  <<  "  ";

}

2.迭代器

string s2("hello world");

string::iterator it = s2.begin();//这里的意思是在string这个类中调用iterator这个迭代器,创建it ,让it保存s2字符串的开头

注意这里的代码意思一定要理解。

while(it != s2.end())

{
cout << *it  <<"  ";//注意这里的* it不是指针!!!

   ++it;

}

注意:所有的容器都可以使用这种类似的方式访问!!!

3.范围for

这个的语法格式与python的for循环比较相似

虽然只是有些类似,但我们可以忽略。回到正题

范围for的语法格式:
for(auto   ch  :n)其中ch::第一部分是范围 内用于迭代的变量,n:第二部分则表示被迭代的范围

上例子:

for(auto  cur : n)

{
  cout << cur << "  ";

}

为了便于自己和大家理解,我在这个例子中的第一个变量设为current单词的缩写

总结:auto后面的两个变量可以理解为起始位置和终点位置,且起始位置也可以认为是当前位置,因为使用输出语句等时都是使用起始位置

小tips:auto后面的两个变量可以认为是起始位置(当前位置)、终点位置

那么这篇文章就先到这里了,我们下次再见

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部