有关string的部分接口

1.迭代器与反向迭代器(iterator-)

迭代器是可以用来访问string里面的内容的,这里来记录一下使用的方法。

里面用到了一个叫做begin函数和一个end函数,这两个都是针对string使用的函数。

s1.begin()函数是指向string内容的第一个元素

而s1.end()指向的则是最后一个元素的下一位

上面就是迭代器了,那什么是反向迭代器?

顾名思义,反向迭代器就是反方向来进行访问和迭代的方向与迭代器是相反的。

分别有rbegin()rend()

这里我们可以暂时理解成s1.begin()是指向这个s1的最后一个位置,而s1.rend()指向的是s1第一个的前一个位置,这边是有点奇怪的,因为s1.rend()所指向的位置是'\0',而'\0'一般又是一个字符串的结尾。我们虽然理解成上述所说,但他的遍历却是跟begin()和end()是一致的,何以见得?

首先我们在这里可以看到,如果直接输出s1.rend(),程序是会崩溃的,但却是可以输出s1.rend()-1,跟s1.end()是一样的。

其次还可以再看一段代码

这边的s1.rbegin()遍历也是跟上面的s1.begin()都是要++才能遍历。

而在这里我们如果给string来加上一个const的话,下面的s1.rbegin()是会报错的,这是因为string和const string是分开的,不能兼容的,如果你定义了一个const string的话,迭代器也应该相应的加上const

那么const迭代器和普通迭代器有什么区别吗。

由于const的性质影响,const迭代器他只具有只读的功能,而普通迭代器是具有可读可写的功能。

2.size,capacity

size是查看当前string的长度大小,而capacity是用来查看当前容量的大小

我们可以看到,s1有11个字符,所以他的size就是11个

那capacity又为什么是15呢?

容量的增容机制是什么呢?

我们可以看到,容量的初始化就是15,第一次的扩容是自身容量的2倍,然后每一次的增容都大约是1.5倍的自身容量。而capacity是包括每个string里面的\0的,因此他会多出来一个位置留给\0来进行存储。

3.reserve

reserve是用来给string开辟空间的,这里看到我欲意开辟100个空间,但是他却给了我111个,这是因为他在每次开辟空间的时候都会多开一点,通常是大于我们所想要开辟的空间的。

4.可以通过[]、at.()来对string进行访问

既然这两个的作用是相似的,那么他们会有什么区别呢?

当访问的数据越界时,用[]访问的话会引发一个叫做断言失败的报错。

而使用at.()的话,会出现一个编译错误

5.append(),+=

这个在python里面是往后面追加内容的意思。在这里的话,他也有好几种用法。

首先可以通过append来对string 进行尾插。跟push_back()的作用是一样的。

然后可以把一个string类型尾插到另一个string类型。

而当我们想要尾插的数据中有空格,我们又不想把空格弄进去,我们还可以这样做

这个比较麻烦一点,那我们不妨可以 使用+=来进行尾插

assign函数会对原有的内容进行覆盖。

6.insert、erase

insert函数可以在某个指定的位置之前插入指定的数据。

这里就是在指针指向0的时候,在0的前面插入数据。

erase函数可以指定删除的部分

这里的意思就是从第一个位置开始删,一共删掉三个数据。

7.replace,find

replace函数顾名思义,就是用来替换字符串中的数据

这里的意思就是,从s1中下标为1的字符开始,到1个字符的位置,换成"x"这个字符

这里的意思就是,从s1中下标为1的字符开始,到2个字符的位置,换成"x"这个字符,但这里的"x"由于只有一个,所以可以是看作把"x"右边的那块往x这里移动,并覆盖掉了一个"l"

而find函数是用来寻找相关的字符的。如果没有找到,就会返回一个string::npos

因此,结合上面的replace,我们可以写一个这样的代码。

简单解释一下,这里就是通过pos来记录s1中空格的位置,由于如果find没有找到空格的话会返回string::npos,因此,当pos!=string::npos,就说明找到了,那就直接使用replace来进行替换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flask笔记-1: 路由

启动服务 绑定host flask run --host0.0.0.0 调试模式 flask --app hello run --debug 路由 创建路由 1. 装饰器 app.route(/one,methods[GET,POST]) 2. add_url_rule app.add_url_rule(/one,view_funcone)

每日OJ题_贪心算法三②_力扣553. 最优除法

目录 力扣553. 最优除法 解析代码 力扣553. 最优除法 553. 最优除法 难度 中等 给定一正整数数组 nums,nums 中的相邻整数将进行浮点除法。例如, [2,3,4] -> 2 / 3 / 4 。 例如,nums [2,3,4],我们将求表达式的值 "…

滑块验证码说明

滑块验证码说明 滑块验证码 旋转验证码 滑动还原验证码 文字点选验证码 快速上手 注意: 如果你项目是使用的Springboot, 请使用SpringBoot脚手架工具tianai-captcha-springboot-starter; 该工具对验证码进行了封装,使其使用更加方便快捷 后端说明 引…

深度学习之基于Matlab Googlenet网络男女性别识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着计算机视觉技术的快速发展,性别识别在多个领域中都展现出了广泛的应用前景&#xff…

【Unity】如何获得TMP Button下的text内容

【背景】 unity项目中使用了TMP命名空间的Button UI组件。脚本中需要获得Button下Text的内容,但是发现用TextMeshPro仍然无法获得button下的text对象。 【分析】 Hierarchy结构上看明确Button下是有Text组件的: 括号里是TMP,所以理论上用TextMeshPro类型去FindComponent…

“A”分考试经验分享:云计算HCIE考试请注意这几点...

大家好,我是誉天云计算HCIE的王同学,于4月2日"A"分通过了云计算3.0 HCIE的认证考试。 首先感谢誉天教育对我的辅导,感谢苗苗老师和石老师对我的帮助,通过这次考试让我对华为云计算有了一定的了解。接下来我就与大家分享…

a标签隐藏页面来源,去除referer引用

<a hreflink relnoreferrer/> rel属性详解&#xff1a; noreferrer 不发送跳转页面来源

bitnami/minio容器部署记录

文章目录 说明minio容器部署创建目录和文件启动容器命令访问控制台 说明 如果你困惑于文件最后修改时间和代码程序查询结果不一致&#xff08;相差八小时&#xff09;请参看Minio(官方docker版)容器部署时区问题研究记录注意创建/opt/1panel/apps/minio/data/后&#xff0c;一…

GOG平台账号注册教程 内附GOG平台官网地址

GOG平台账号注册教程 内附GOG平台官网地址 GOG平台不知道大家听没听说过&#xff0c;该平台也是一款游戏平台&#xff0c;上面还是有着不少的游戏的&#xff0c;尤其是该平台的福利活动特别多&#xff0c;经常会免费发放一些游戏&#xff0c;这个7月份的话就有两款游戏现在是…

聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别

前言 有些小伙伴看到上一篇文章后&#xff0c;可能会发现中间件和我们之前讲的筛选器非常类似&#xff0c;比如它们都是通过 next 串起来的一系列的组件&#xff0c;并且都可以在请求处理前后执行代码&#xff0c;都可以通过不执行 next 来进行请求的终止。那么筛选器和中间件…

400G光模块产品最全分类解析

随着信息技术的迅猛发展&#xff0c;网络带宽需求不断增加&#xff0c;而400G光模块作为当前最热门的光通信技术之一&#xff0c;正在成为新一代网络的关键组成部分。本文将对400G光模块进行最全面的分类解析&#xff0c;以帮助大家深入了解其技术特点和应用场景。 一、ETU-LI…

轻松驾驭teamOS审批流程,权限提升秘诀:teamOS审批功能详解与实战指南

大家在日常办公时&#xff0c;是否有遇到过这样的情况&#xff1a;在进行协作的时候&#xff0c;需要在项目组中发布文档&#xff0c;但当前并没有这个权限。正常走审批流程&#xff0c;可能需要花费一定的时间。 teamOS&#xff0c;一键发起审批流程 在企业的日常运营中&…

FMEA助力智能电网升级:构建安全、高效、可靠的电力网络

随着科技的不断进步&#xff0c;智能电网已成为现代电力行业的重要发展方向。而在这个过程中&#xff0c;FMEA&#xff08;失效模式和影响分析&#xff09;作为一种重要的质量管理工具&#xff0c;正日益发挥着其在智能电网建设中的赋能作用。本文将从FMEA的基本概念出发&#…

Java基础(三):Java异常机制以及底层实现原理

&#x1f337;一、异常 ☘️1.1 什么是异常 Java异常是程序发生错误的一种处理机制&#xff0c;异常的顶级类是Throwable&#xff0c;Throwable字面意思就是可抛出的&#xff0c;该类是所有的错误和异常的超类&#xff0c;只有Throwable类或者Throwable子类的实例对象才可以被…

React 第二十三章 shouldComponentUpdate

React 中的 shouldComponentUpdate 是一个生命周期方法&#xff0c;用于控制组件是否需要重新渲染。 文档地址&#xff1a;https://zh-hans.reactjs.org/docs/react-component.html#shouldcomponentupdate shouldComponentUpdate 接收两个参数&#xff1a;nextProps 和 nextS…

缓存菜品操作

一&#xff1a;问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 二&#xff1a;实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; 每个分…

ACWing-186巴士-DFS

题目 原题链接&#xff1a;186. 巴士 - AcWing题库 oj:xmuoj | 最小化蒙德城的旅行者队伍 思路 本题因为n300&#xff0c;说明搜索深度很深&#xff0c;但是测试数量小于17&#xff0c;所以答案一定在比较浅的一个搜索深度中&#xff0c;于是可以利用迭代加深的处理方法迭代…

基于Springboot+Vue的Java项目-旅游网站系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

OpenNJet如何做到让用户永远在线

前言 最近看到了国内开源的一个名为OpenNJet的项目&#xff0c;有一个响亮的口号&#xff1a;“下一代云原生应用引擎”。 一下子就被吸引到了。 先看下官方对OpenNJet的介绍&#xff1a; OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序&…

红黑树(RBTree)认识总结

一、认识红黑树 1.1 什么是红黑树&#xff1f; 红黑树是一种二叉搜索树&#xff0c;与普通搜索树不同的是&#xff0c;在每个节点上增加一个“颜色”变量 —— RED / BLACK 。 通过对各个节点颜色的限制&#xff0c;确保从 根 到 NIL &#xff0c;没有一条路径会比其他路径长出…