当前位置: 首页 > news >正文

string类

string - C++ Reference (cplusplus.com)

引入:

ASCII码表------>Unicode

其中又进行了分类:

(UTF--8兼容ASCII码表) 

等等等等

(不但迭代和更新)

例:


目录

正文开始!!!!!

string类常用的接口

常见构造

容量操作

reserve和resize:

三种访问string的方式:(访问string里的每一个)

insert与erase

replace与find:

 swap: 

substr:

find_first_of与find_first_not_of与find_last_of

getline

reverse


正文开始!!!!!

string类常用的接口

常见构造

例:


(起初有的是length,后来为了和其他保持一致才用了size)

例:

 

 (15没有包括/0,实际上是16个字符)


容量操作

 例:

 更好的选择:

 尾插用append,其他插入(包括头插可以用)


reserve和resize:

 

(reverse减少扩容,提高效率) 

 缺省值填的是‘0’

 如果想改缺省值,

 总结一下reserve和resize吧!

扩容如果有足够的空间可以原地扩容,但缩容不能原地缩(一般为开辟新的空间)


迭代器:(左闭右开)

 (end为最后一个的下一个)

三种访问string的方式:(访问string里的每一个)

1.下标+方括号

2.迭代器

3.范围for(范围for的底层是迭代器)


(两种迭代器:)

这里介绍一种反向遍历的方法。

例:

同时注意:

 如果函数调用的对象为const,返回的一定得是const迭代器,要不然就会报错。

例:(普通迭代器和const迭代器的区别)


insert与erase

insert:

例:

但是并不推荐使用insert,为什么呢?(联系数据结构,都存在挪动数据,效率低下)

erase:


replace与find:

find:

 例:

结果为: 

 如果想把空格都替换掉呢?加个循环不就好了!


 把程序改进一下:

 (效率提升了一点!) 

 但其实:(以空间换时间)

一步开到位会省下很多扩容!!!!!(reserve(不用resize,因为不用在扩容的同时初始化)) 


 swap: 

那这里的swap与库里有的函数swap有什么区别呢?

例:

 

 哪一个更高效呢?

当然是string里的swap啦!相当于是改变了指针指向的位置。

库里的swap要用到深拷贝


c_str:

例:

c_str是会按照字符串去打印的(是以\0为终止的)


substr:

例:


find_first_of与find_first_not_of与find_last_of

 找到括号里字符串中的任何一个字母都会停下来。

例:

  (注意这个只能用于字符的替换修改,对于字符串来说,还得用find)

 find_first_of与find_last_of都是找任一个,只不过一个是顺着找的,一个是倒着找的。


getline

例:getline(cin,str);


reverse

 注意凡是迭代器都是左闭右开

http://www.lryc.cn/news/60264.html

相关文章:

  • LLM总结(持续更新中)
  • 【GPT4】微软 GPT-4 测试报告(2)多模态与跨学科的组合
  • Celery使用教程完整版【从安装到启用】
  • 【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了
  • Java基础:IO流有哪些,各有什么特点和功能
  • MySQL、PostgreSQL、Oracle、SQL Server数据库触发器实现同步数据
  • 因为我没交周报,leader要罚款200元,怎么给他挖坑?能以敲诈勒索罪告他吗?...
  • java跨域问题
  • 故障重现, JAVA进程内存不够时突然挂掉模拟
  • 数画-AI绘画-免费的人工智能AI绘画网站
  • ElasticSearch安装、启动、操作及概念简介
  • Linux用户管理
  • Docker 的安装和镜像容器的基本操作
  • 被盗的ChatGPT账户在暗网热销,ChatGPT的隐私和安全问题依旧值得关注
  • OpenCV2 计算机视觉应用编程秘籍:6~10
  • 如何对农田温室气体进行有效模拟?
  • java数据结构刷题练习
  • 《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议
  • Qt Quick - TabBar
  • ElasticSearch集群搭建
  • 【pan-sharpening 攻击:目标检测】
  • nginx反向代理_负载均衡的配置
  • 程序员随时担心被抛弃......大厂外包值不值得去?
  • C++解释器模式实战:从设计到应用的全面指南
  • 使用华为云免费资源训练Paddle UIE模型
  • 深度学习12. CNN经典网络 VGG16
  • Doris(3):创建用户与创建数据库并赋予权限
  • 深入浅出 Golang 内存管理
  • 基于Python的简单40例和爬虫详细讲解(文末赠书)
  • Vector - CAPL - CAN x 总线信息获取(续2)