C++——string(2)

news2024/10/5 16:23:16

 作者:几冬雪来

时间:2023年7月7日

内容:C++——string内容讲解

目录

前言: 

1.string:

1. reserve:

2.resize: 

3.assign: 

4.insert: 

5.erase:

6.replace: 

7.find: 

结尾:


前言: 

在上一篇博客中,我们讲解了string里面一部分指令的用法,类似计算长度,计算最大长度等等。那么今天我们就继续对其深入了解string的其他指令吧。 

 

1.string:

1. reserve:

接下来我们来讲解的是string中的reserve指令,这个指令看着和我们的reverse(反转)十分相似。

但是其实它们的作用不相同。reserve的作用是——保留。 

它可以对我们的容量进行改变。 

 

类似上面的这段代码我们就用到了reserve来进行创建容量为100的空间

这种开空间的方法适用于——我们知道自己想开空间的大小,然后直接开出它的空间,这样就不用扩容的步骤了

当然这里要注意我们虽然在VS2019中开辟了大小为100的空间,但是实际上我们开辟的空间有可能大于100

像这里我们的编译器就开辟了大小为111的空间

不过这种情况每个编译器都不一样

如果我们在Linux平台底下用上面这种形式开辟100的空间,那么它就正儿八经的开辟100的1空间给我们。 

当然这里我们还有缩容的操作,但是它并不具有约束力

2.resize: 

在上面我们的reserve是用于开空间。

这里我们的resize和reserve一样可以开空间,同时我们的resize在开空间后也可以进行填值初始化

而我们的就用的resize开辟了大小为100的空间

但是我们的resize会对其进行初始化,如果我们不填什么数据的话,这里默认我们初始化的值为0。 

同样的我们也可以往s1中填充我们的数据。 

像这样就可以进行数据的填充了。

既然涉及到了数据的填充,那么肯定少不了空间不够需要扩容的问题。 

如果空间不够的话,它会对空间进行相关的处理后将值填上

如果当我们想resize想取出的数据小于我们的开辟的空间它会怎么样

这个地方如果像我们最下面想要取20个空间的数据的话

这个地方它的数据会进行删除,删剩下20个值的空间

但是要记住我们这里删除数据并不等于缩容,它的容量还是不变的。 

3.assign: 

接下来要介绍的是我们的——assign指令

assign指令归类在append和+=的范畴当中,但是assign又和它们有些不同

在我们了解到现在,append和+=都是在后面添加我们想要的内容,但是assign在这里有赋值的意思

 

就像这里,append指令在s1原有的基础上后边添加了我们想要的内容。

assign则是将s1的内容都更改为其他的内容,这也和C语言中的赋值操作十分的相似

4.insert: 

下来是我们的insert指令。

insert指令是指在原空间的某个位置插入输入的值

就像上图一样,一开始在0和5的位置分别插入了"hello"和" world"

并且也能选择在0处规定多少个字符将其输出

而且这个指令我们也可以用迭代器来将其实现。

这个地方我们就可以用s1.begin来对空间的头处插入想要的字符

有人就要问了:迭代器这样操作的话,只能在头部插入字符是不是太费了?

那就要看看第二条迭代器的指令。

众所周知迭代器类似指针,所以只要在s1.begin后加上要跳过的个数即可在中间插入想要的值

insert如此之好用,但是在现实中我们的insert指令却是很少的被使用到。

5.erase:

然后是我们的——erase指令

它代表的意思是从某个位置开始,删除n个字符。 

既然要给删除字符的个数,那肯定少不了删多了又或者不删除的情况,那么这种情况下编译器又是怎么应对的。 

像这里我们给一串字符。

如果想要从第5个位置开始,删除一个字符的话就使用erase(5,1) 来进行删除

要是我们想将第5个位置后面的字符一个不剩的全部删掉的话,这个地方我们就只是传开始删除的位置就行,删除的个数不用写出来。 

一样的这个指令也可以用迭代器来实现,但是日常这个指令用的比较少,因为效率低。 

6.replace: 

这里的replace的意思的替换。  

意思就是把某个位置开始的n个字符进行替换,替换的大小写在我们最后面。 

这里我们就成功的将第6个位置后面的5个字符替换成为了我们的"xxxxxxxx"

同样的替换的"xxxxxxxx"可以缩小为2个甚至3个

要被替代的字符个数自己也可以选择

但是这个指令并不经常用到,因为在替换时候所替换的字符的个数不同,空间要进行扩容和删除,这也就导致了效率的降低。 

7.find: 

接下来的指令就是我们的find指令

相信学习过英文的同学都知道find的意思就是查找。 

那我们的find指令通常在哪里使用呢?

类似上图这种要将一个网站链接分为几个部分的时候就会用到我们的find指令。 

像上图我们将find的字符或者字符串交给pos1或者2中,然后进行判断(npos是静态成员),接下来再将其打印出来

如果在第一次寻找过后我们再从头开始找'/'前的数据的话我们会停在"https:"中,因此在find的时候我们要标明起始位置

但是在最后一次的时候我们只需要打印出剩下的数据就行,因此不用再次进行find。 

如果我们想要从后往前进行查找的话,这里就要谈到我们的——rfind

这里rfind的用法和作用和find十分相似这里就不讲解了。

结尾:

到这里我们的string的一小部分的指令,接下来我们将介绍和学习更多的有关string有关的指令,最后希望这篇博客能给学习的同学带来帮助。

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

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

相关文章

策略模式深度实践——通用的HTTP接口调用

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

【CSS卡片翻转特效】CSS3实现3D旋转动画卡片翻转效果(附源码)

文章目录 写在前面涉及知识点效果展示1、web页面的搭建1)创建dom节点2)DOM元素添加图片3)添加翻转后的文字 2、CSS效果的实现1)div本身翻转效果2)3D翻转效果完整CSS3实现翻转效果demo代码可以留言邮箱或者自己去百度网…

扒开 TCP 的外衣,看清 TCP 的本质

TCP 非常重要,它的内容很多,今天只能讲解其中的一部分,但足以让你超越 80 % 的编程开发人员对于 TCP 的认知。 本篇内容非常多,非常干,希望你花点时间仔细研究,我相信会对你有所帮助。 1. TCP 协议是什么…

【tomcat】应用服务

准备环境 三台虚拟机 192.168.1.120 192.168.1.122 192.168.1.131 三台虚拟机关闭防火墙 、查看光盘 、检测yun创库 查看JDK是否安装 [rootlocalhost ~]# java -version openjdk version "1.8.0_161" //这是系统自带的rpm方式安装 OpenJDK Runtime Environment…

云端刺点难?这次看看云端地球怎么做

了解像控点与刺点 像控点是直接为摄影测量的控制点加密或测图需要而在实地布设并进行测定的控制点。 刺像控点是把外业采集的像控点的地理坐标与看到这个点的照片相关联的过程。在倾斜摄影建模中,使用像控点进行刺点可以大大提高建模精度。 为什么云端地球可以做…

青岛大学_王卓老师【数据结构与算法】Week04_02_带尾结点的循环链表合并_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

LLM搭建金融系统

背景: 这篇文章主要给大家介绍如何基于LLM模型配合各种pluging工具(这边主要是跟数据连接、检索的工具相关:知识图谱、向量库...)。在开始文章前先讲讲我的观点:大模型的颠覆性应用应该不在于AIGC,而在于数据驱动技术…

python验证公网ip与内网ip

公网IP和内网IP都是用于标识网络设备的地址,但它们有着不同的作用和特点。 公网IP是由互联网服务提供商(ISP)分配给用户设备的唯一标识符。它是全球范围内唯一的,并且可以被其他网络设备使用来寻找和连接特定的设备。公网IP通常用…

Linux操作系统中命令提示符最后的符号为“#”或“$”

07-Linux操作系统中命令提示符最后的符号为“#”或“$” 1、最后提示符“#”2、最后提示符“$”3、[lwhlocalhost~]中 “ ~” 1、最后提示符“#” 表示管理员身份2、最后提示符“$” 表示不同用户3、[lwhlocalhost~]中 “ ~” 表示当前用户的家目录

安装umi

安装umi 一、安装Node.js,通过node -v查看版本号 二、安装yarn,其中tyarn使用的是npm.taobao.org的源,速度要快一些(可以把yarn看做优化了的npm) 1. 安装tyarn npm i yarn tyarn -g1 -g:全局安装 2. …

【C++】用Ceres从三维点中拟合三维空间中的圆

任务描述 在三维空间中有N个点,需要得到过这N个点的最优圆,需要估计圆的圆心、半径和法向量,本文提供了一种方法和代码示例,利用Ceres进行非线性拟合,在cpp上开发。 圆心为三维,半径一维,法向…

深入刨析容器(四):深入理解容器镜像

容器通过Namespace和Cgroups将自己与宿主机隔离,那么容器里的进程看到文件系统又是什么样子的呢?容器里的程序应该看到完全独立的文件系统,这样它就可以在自己的容器目录(比如 /tmp)下进行操作,而完全不会受…

贝莱德CEO力挺比特币!币圈嘲讽:传统金融从嘲笑到开始入场了!

资产管理巨头贝莱德(BlackRock)首席执行官Larry Fink公开喊话,希望监管者以民主化方式,来看待现货ETF申请。将与监管积极配合,解除他们对现货比特币ETF的疑虑。 六月中旬,贝莱德向美国证券交易委员会&#…

vue3中Cron表达式的使用

效果&#xff1a; <a-form-item label"Cron表达式" name"cron" required><a-input v-show"false" v-model:value"setForm.cron"></a-input><a-button type"primary" size"small" click"…

使用NVCleanstall导致显卡功率被锁至115W问题解决

以拯救者Y9000K为例&#xff0c;显卡功耗最大可以达到165W&#xff0c;但最近更新至最新的显卡驱动后&#xff0c;发现显卡功率被限制到了115W。一度怀疑是老黄做了手脚。 经过一系列测试后发现&#xff0c;是自己操作姿势不对。 NVIDIA Platform Controllers and Framework这…

leetcode极速复习版-第四章字符串

目录 344. 反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串 28.实现 strStr() 459.重复的子字符串 字符串总结 344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char…

JAVA jfreechart生成柱状图

JAVA jfreechart生成柱状图 在项目资源评估中&#xff0c;也就是生成word文档里需要根据数据生成柱状图&#xff0c;在网上找到了jfreechart工具包&#xff0c;来生成柱状图&#xff0c;当然他不仅仅只能生成柱状图&#xff0c;还支持折线图、饼状图等等… 过程 导入依赖 &l…

快速创建剪映草稿

实现原理 : JianYingPro 项目文件是 json 的形式存储的,只需要创建draft_content.json,draft_mate_info.json 打开软件后会自动补全。添加一个媒体到轨道顺序 草稿媒体库 -> 内容媒体库-> 轨道片段add_media_to_track 会识别媒体类型,加入到对应轨道。当没有视频轨道时…

哈希表 基础理论

什么是哈希表&#xff1f; 哈希表英文名hash table&#xff0c;国内有一些书籍也翻译为散列表。哈希表是根据关键码的值而直接进行访问的数据结构。 直白来讲&#xff0c;其实数组就是一张哈希表&#xff0c;哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访…

华为云编译构建CodeArts Build新手操作指南

华为云编译构建&#xff08;CodeArts Build&#xff09;基于云端大规模并发加速&#xff0c;为客户提供高速、低成本、配置简单的混合语言构建能力&#xff0c;帮助客户缩短构建时间&#xff0c;提升构建效率。 本文将给各位开发者带来华为云CodeArts Pipeline的手把手初级教学…