【C++】STL容器之string(修改操作)

在这里插入图片描述

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹C语言进阶🔹C++
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

文章目录

  • 前言
  • string类的对象修改函数
  • 1.push_back和pop_back
  • 2.append
  • 3.operator+=(string)
  • 4.insert
  • 5.assign
  • 6.erase
  • 7.replace
  • 8.swap

前言

之前我们学习了string类中的有关容量大小,遍历的相关操作。本文将继续学习string类对象的修改函数。
在这里插入图片描述

string类的对象修改函数

一共有如下几种:

函数名说明
push_back在字符串后尾插字符c
pop_back删除字符串的最后一个字符
append在字符串后追加一个字符串
operator+=()在字符串后追加字符串str
insert在指定位置插入字符或字符串等操作
assign使用指定的字符串替换原字符串
erase删除字符串中的一部分
replace替换指定区间的字符串
swap收缩到合适大小

下面的演示中,都只用到了下面两个s1,s2.

string s1("hello world!");
string s2("abc");

1.push_back和pop_back

在这里插入图片描述

  • 它的重载只有一个,功能:在字符串后尾插字符c

使用演示:
在这里插入图片描述
注意:push_back()仅能尾插一个字符.

pop_back:与其相反:功能是删除最后一个字符

2.append

在这里插入图片描述
它的重载有六个,接下来整理一下

string& append (const string& str);/追加一个string对象
string& append (const string& str, size_t subpos, size_t sublen);追加一个string对象中的指定字符串长度
string& append (const char* s);追加一个字符串
string& append (const char* s, size_t n);追加字符串中的前n个字符串
string& append (size_t n, char c);追加n个字符
  • 接下来,展示一下他们的使用方式

先创建两个string类

string s1("hello world!");
string s2("aaa");

(1)string& append (const string& str);

  • 追加一个字符串或者对象
    在这里插入图片描述

(2)string& append (const string& str, size_t subpos, size_t sublen);

  • 功能:追加一个string对象中的指定字符串长度
  • subpos:起始位置
  • sublen:长度

在这里插入图片描述

(3)string& append (const char s, size_t n);*

  • 追加字符串中的第n个字符串开始到结束的字符串

在这里插入图片描述
(4)string& append (size_t n, char c);

  • 增加n个字符
    在这里插入图片描述

3.operator+=(string)

在这里插入图片描述

  • 功能:它一共有三个重载形式,分别是拼接一个string类的对象、一个字符串、一个字符
    在这里插入图片描述

4.insert

在这里插入图片描述

重载功能
string& insert (size_t pos, const string& str);在指定位置插入一个string对象
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);在指定位置插入一个string对象里的一部分
string& insert (size_t pos, const char* s);在指定位置插入一个字符串
string& insert (size_t pos, const char* s, size_t n);在指定位置插入一个字符串的前n个字符
string& insert (size_t pos, size_t n, char c);在指定位置插入n个字符
void insert (iterator p, size_t n, char c);在指定迭代器的位置插入n个字符
iterator insert (iterator p, char c);/在指定迭代器的位置插入一个字符,并且返回一个迭代器的位置

根据重载格式,自行实现相应的功能,也是十分见简单。但是这些操作十分消耗时间和空间。

  • 在指定位置插入一个string对象:在s1中第5个位置插入s2.
    在这里插入图片描述

  • 在在指定位置插入一个字符串

5.assign

  • 功能:为字符串赋一个新值,替换其当前内容。
    在这里插入图片描述
  • 它也有许多重载,但是用的不多,可以自己了解。主要就是一个覆盖。
    在这里插入图片描述

6.erase

在这里插入图片描述
一共有三个重载

重载功能
string& erase (size_t pos = 0, size_t len = npos);删除从pos位置开始到最后的字符,npos是缺省值
iterator erase (iterator p);删除指定位置元素,注意是迭代器指向
iterator erase (iterator first, iterator last);删除指定范围元素,注意使用迭代器指向
  • 删除从pos位置开始的元素
    在这里插入图片描述

  • 删除某一范围区间的元素
    在这里插入图片描述

  • 一般更多的erase被用来进行头删,如下两种方法
    在这里插入图片描述

注意:erase这个接口和insert一样,在修改原串的时候会造成大量的数据挪动,特别是在头删除的时候,需要挪动[n - 1]个数据。

7.replace

在这里插入图片描述

这个函数的重载类型非常多,但是只用记住常用的就行。

简单来说,这个函数的功能就是替换字符串。
拿几个常用的来演示一下吧!

  • 在指定区间位置,替换。
    在这里插入图片描述

它会删除指定区间元素,然后把你的指定元素放进去,数组的大小可能会发生变化。

8.swap

在这里插入图片描述
功能:在string中可以交换两个字符串。但是swap在其他容器中也同样可以使用。

  • 交换s1,s2

在这里插入图片描述

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

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

相关文章

做了个很牛的网站,可以搜索网站的网站到底有多好用?

今天给大家推荐的网站叫做:毒蘑菇 - 搜索 毒蘑菇搜索,顾名思义呢,搜索的功能比较好用,大家上网的时候总是需要记住网站的地址,即使你知道网站的名称,也得跳转到百度然后在搜索,有时候百度上那么…

动态规划(算法竞赛、蓝桥杯)--最详细的01背包DP问题滚动数组优化

1、B站视频链接&#xff1a;E08【模板】背包DP 01背包_哔哩哔哩_bilibili 题目链接&#xff1a;[USACO07DEC] Charm Bracelet S - 洛谷 #include <bits/stdc.h> using namespace std; const int N3410,M13000; int n,m; int d[N],w[N],f[N][M];//价值、体积、状态数组 …

Java面试——锁

​ 公平锁&#xff1a; 是指多个线程按照申请锁的顺序来获取锁&#xff0c;有点先来后到的意思。在并发环境中&#xff0c;每个线程在获取锁时会先查看此锁维护的队列&#xff0c;如果为空&#xff0c;或者当前线程是等待队列的第一个&#xff0c;就占有锁&#xff0c;否则就会…

VB6添加资源文件总是内存溢出?最终我还是治好了这胎里病!

网管小贾 / sysadm.cc 说来也奇怪&#xff0c;话说不久前我刚刚解决了 VB6 释放资源文件的一个 BUG &#xff0c;心里正美滋滋的。 不料居然还有个巨大的 BUG 在后边等着我呢&#xff01; 真是不说不知道&#xff0c;一说吓一跳&#xff0c;十天找 BUG &#xff0c;N把辛酸泪…

matlab 凸轮轮廓设计

1、内容简介 略 46-可以交流、咨询、答疑 2、内容说明 略 4 取标段的分析 取标装置是贴标机的核心部件之一&#xff0c;是影响贴标质量和贴标精度的重要因素&#xff0c;取标段是通过取标板与标签的相切运动使得涂有胶水的取标板从标签盒中粘取标签纸[4]&#xff0c;理论…

如何下载B站高清视频、音频到本地?

在B站上找到了喜欢的视频&#xff1f;想要将它保存到本地或者与朋友分享&#xff1f;本文将向您详细介绍一种简单而有效的方法&#xff0c;帮助我们轻松下载并导出B站视频&#xff0c;以便随时欣赏或分享。 一、如何下载并导出B站视频&#xff1f; 手机端/平板端 第一步&…

「连载」边缘计算(十九)02-22:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; 从启动函数Start(&#xff09;中可以看到&#xff0c;其以go routine的方式启动很多后台处理服务&#xff0c;具体如下。 1&#xff09;初始化edged的kubeClient&#xff0c;具体如下所示。 // use self defined client to replace fake kube…

基于AI将普通RGB图像转换为苹果Vision Pro支持的空间照片

将 RGB 图像转换为空间图片 一、引言 随着AR和VR技术的普及,空间照片格式(.HEIC)逐渐受到关注。这种格式允许用户在AR/VR设备上体验到更为真实的立体空间效果。为了让更多的普通图片也能享受这种技术,我们开发了这款可以将普通RGB图像转换为苹果Vision Pro支持的.HEIC格式的…

leetcode:47.全排列2

1.与上一题不同的是&#xff0c;本题目的数组中有重复的数字&#xff0c;所以最终结果需要去重&#xff01; 2.树形结构&#xff1a;先将原来的数组进行排序&#xff0c;方便之后的去重&#xff01;同一数层上不能取重复的元素&#xff01; 3.代码实现&#xff1a; 1.当path…

k8s部署 多master节点负载均衡以及集群高可用

一、k8s 添加多master节点实验 1、master02节点初始化操作 2、在master01节点基础上&#xff0c;完成master02节点部署 ①从master01节点复制所需要的文件 需要从master01节点复制etcd数据库所需要的ssl证书、kubernetes安装目录&#xff08;二进制文件、组件与apiserver通信…

CleanMyMac4苹果Mac电脑全面、高效的系统清理工具

CleanMyMac 4 for Mac是一款专为Mac用户设计的系统清理和优化工具。它具备多种功能&#xff0c;旨在帮助用户轻松管理和释放Mac上的磁盘空间&#xff0c;同时提升系统性能。 系统垃圾清理&#xff1a;CleanMyMac 4能够深入扫描Mac的每一个角落&#xff0c;智能识别并清除不需要…

Java中for循环效率比较

先说结论&#xff1a; 对于遍历一个1千万条数据的arrayList&#xff0c;fori循环最快&#xff0c;iterator其次&#xff0c;foreach再其次&#xff0c;forStream最慢。 测试代码 public class ForSpeedTest {// private static final long FOR_COUNT 10000_0000;private s…

wpf 简单实验 数据更新 列表更新

1.概要 1.1 需求 一个列表提供添加修改删除的功能&#xff0c;添加和修改的内容都来自一个输入框 1.2 要点 DisplayMemberPath"Zhi"列表.ItemsSource datalist;(列表.SelectedItem ! null)(列表.SelectedItem as A).Zhi 内容.Text;datalist.Remove((列表.Selec…

Java编程与数据库技术:疫情居家办公的坚实后盾

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

canvas坐标系统 webgl坐标系统 uv纹理坐标系统 原点

一、canvas原点在左上角&#xff0c;x轴正方向向右&#xff0c;y轴正方向向下&#xff0c;一个点对应一个像素 二、webgl原点在正中间&#xff0c;x轴正方向向右&#xff0c;y轴正方向向上&#xff0c;数据范围在[-1,1]之间 三、uv原点在左下角&#xff0c;x轴正方向向右&#…

华为OD机试真题-求最多可以派出多少支团队-2023年OD统一考试(C卷)---Python3--开源

题目&#xff1a; 考察内容&#xff1a; if while&#xff1b;break; sort&#xff08;&#xff09;&#xff1b;for 代码&#xff1a; """ analyze: 团队&#xff1a;1-2 1个人只能参加一个团队input: 总人数 int 每个人能力&#xff0c;list 最低能力值 …

离散数学复习笔记

一、数理逻辑 命题逻辑的基本概念 命题&#xff1a;能够判断真假的陈述句&#xff08;命题真值唯一&#xff09; 真值唯一的解释&#xff1a; 原子命题 > 复合命题

matlab simulink变压器温度仿真

1、内容简介 略 48-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab simulink变压器温度仿真_哔哩哔哩_bilibili 4、参考论文 略 大型油浸风冷变压器绕组温度场分析_高原 基于顶层油温的变压器绕组热点温度计算改进模型_陈伟根 基于热电类比理论的油浸式电…

《Docker 简易速速上手小册》第9章 Docker 与持续集成(2024 最新版)

文章目录 9.1 持续集成的基本概念9.1.1 重点基础知识9.1.2 重点案例&#xff1a;Python Web 应用的 CI 流程9.1.3 拓展案例 1&#xff1a;Python 数据分析项目的 CI9.1.4 拓展案例 2&#xff1a;Python 微服务的 CI/CD 9.2 Docker 在 CI/CD 中的应用9.2.1 重点基础知识9.2.2 重…

第三节:Vben Admin登录对接后端login接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 文章目录 系列文章目录前言一、Flask项目介绍二、使用步骤1.User模型创建2.迁移模型3. Token创建4. 编写蓝图5. 注册蓝图 三. 测试登录总结 前言 上一节&…