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

news/2024/4/17 7:23:58

在这里插入图片描述

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹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

在这里插入图片描述


https://www.xjx100.cn/news/3293542.html

相关文章

密码学——离散对数

引言 离散对数 Discrete logarithm 是一种基于同余和原根的对数运算。如 l o g b a logb^a logb

java编程基础实验报告小结,java算法基础面试题

分享第一份Java基础-中级-高级面试集合 Java基础(对象线程字符接口变量异常方法) Java中级开发(底层Spring相关Redis分布式设计模式MySQL高并发锁线程) Java高级“程序猿”(高并发Redis缓存分布式消息队列高可用微服务…

flutter 封装webview和使用本地网页

最先看到flutter_webview_plugin 用法特别简单 flutter_webview_plugin | Flutter PackagePlugin that allow Flutter to communicate with a native Webview.https://pub-web.flutter-io.cn/packages/flutter_webview_plugin缺点: 没有实现js sdk的功能 没有办法 …

Android 接入指纹识别

接入指纹框架:https://github.com/Tencent/soter implementation com.github.Tencent.soter:soter-wrapper:2.0.91.Application中初始化 class IApplication : Application() {override fun onCreate() {super.onCreate()instance thisinitSort()}private fun in…

瑞_Redis_Redis命令

文章目录 1 Redis命令Redis数据结构Redis 的 key 的层级结构1.0 Redis通用命令1.0.1 KEYS1.0.2 DEL1.0.3 EXISTS1.0.4 EXPIRE1.0.5 TTL 1.1 String类型1.1.0 String类型的常见命令1.1.1 SET 和 GET1.1.2 MSET 和 MGET1.1.3 INCR和INCRBY和DECY1.1.4 SETNX1.1.5 SETEX 1.2 Hash类…

DAY9-防病毒AV概述

DNS过滤 URL过滤和DNS过滤对比

广和通发布基于MediaTek T300平台的RedCap模组FM330系列及解决方案

世界移动通信大会MWC 2024期间,广和通发布基于MediaTek T300平台的RedCap模组FM330系列,加速5G-A繁荣发展。FM330系列及其解决方案采用全球先进RedCap方案,满足移动宽带和工业互联对高能效的需求。 广和通FM330系列采用全球首款6nm制程且集成…

Java并发之线程池详解

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ 👀👀👀 个人博客:小奥的博客 👍👍👍:个人CSDN ⭐️⭐️⭐️:传送门 🍹 本人24应届生一枚,技术和水平有限&am…