【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://www.hqwc.cn/news/499512.html

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

相关文章

MYSQL学习笔记:索引

MYSQL学习笔记:索引 文章目录 MYSQL学习笔记:索引索引的分类索引的创建删除索引优化B树索引B树InnoDB主键和二级索引树聚集索引与非聚集索引哈希索引INNODB的自适应哈希索引索引和慢查询 用索引也是要涉及磁盘I/O的操作的索引也是一种数据结构&#xff0…

连续小波变换

1 连续小波变换 连续小波变换(CWT)用于分解小波信号。小波是时间上小的、高度局部的振荡。傅里叶变换将信号分解为无限长的正弦和余弦,从而丢失了所有时间位置信息,而CWT 的基本功能是时间局部化父小波的缩放和移位版本。CWT 用于构建信号的时频表示&am…

LeetCode225. 用队列实现栈(C++)

LeetCode225. 用队列实现栈 题目链接代码 题目链接 https://leetcode.cn/problems/implement-stack-using-queues/description/ 代码 class MyStack { public:queue<int> q1;queue<int> q2;MyStack() {}void push(int x) {q1.push(x);}int pop() {int size q1…

45、WEB攻防——通用漏洞PHP反序列化POP链构造魔术方法原生类

文章目录 序列化&#xff1a;将java、php等代码中的对象转化为数组或字符串等格式。代表函数serialize()&#xff0c;将一个对象转换成一个字符&#xff1b;反序列化&#xff1a;将数组或字符串等格式还成对象。代表函数unserialize()&#xff0c;将字符串还原成一个对象。 P…

配置前端项目到 github-pages

Quickstart for GitHub Pages - GitHub Docs

MySQL:合并查询语句

1、查询表的数据 t_book表数据 SELECT * FROM db_book.t_book; t_booktype表数据 SELECT * FROM db_book.t_booktype; 提醒&#xff1a; 下面的查询操作的数据来自上图查询表的数据 2. 使用 UNION 查询结果合并&#xff0c;会去掉重复的数据 使用UNION关键字是&#xff0c;数…

刷题日记 | 字符串扩容和增强型for循环

for(char c:s)遍历字符串 增强型for循环 C for(char c:s)遍历字符串 增强型for循环_c for (char c : s)-CSDN博客 字符串使用前要进行扩容 reserve函数 【CString类成员函数辨析】resize(),size(),capacity(),reserve()函数的解析与对比_c reserve函数-CSDN博客 a.size() 用来…

kali安装ARL灯塔(docker)

1、root身份进入容器 ┌──(root㉿Kali)-[~/桌面] └─# su root ┌──(root㉿Kali)-[~/桌面] └─# docker 2、先更新再克隆 ┌──(root㉿Kali)-[~/桌面] └─# apt-get update …

论文笔记:基于互信息估计和最大化的深度表示学习

整理了ICLR2019 LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION&#xff09;论文的阅读笔记 背景模型 论文地址&#xff1a;DIM code&#xff1a;代码地址 背景 发现有用的表示是深度学习的一个核心目标&#xff0c;由于之前的工作已经可以…

苍穹外卖知识点总结(一)

简介 技术选型 展示项目中使用到的技术框架和中间件。 用户层&#xff1a;node.js Vue.js ElementUI 微信小程序 apache echarts 网关层&#xff1a;nginx 应用层&#xff1a;Spring Boot Spring MVC Spring Task httpclie…

USACO 2024 Feb Bronze铜组题解

闲话:今天是4年一度的奇观——2月29日!(地球人都知道) 所以为了纪念这个特殊的日子&#xff0c;我决定倒着讲。这是什么奇怪的规矩&#xff1f;(雾 Maximizing Productivity: 二分即可。 #include <bits/stdc.h> using namespace std; const int maxn200005; int c[ma…

LTE 网络与互联网的连接

LTE 网络与互联网的连接 当用户设备 UE&#xff08;如手机&#xff09;开机后&#xff0c;就登记到 LTE 网络&#xff0c;以便使用网络资源传送 IP 数据业务。 LTE 网络内的数据路径由两大部分组成&#xff1a; -空口无线链路&#xff08;UE→eNB&#xff09;。 -核心网中的隧…