【C++STL基础入门】深入浅出string类insert和appand

news2024/11/18 23:35:50

文章目录

  • 前言
  • 一、插入
    • 1.中间插入
    • 2.尾巴插入
      • +=拼接
      • appand
  • 总结


前言

本系列STL是使用vs2022+C++20版本特性来写的。
在这里插入图片描述

在C++标准模板库(STL)的众多容器中,string类是处理字符串的重要工具。它提供了丰富的函数和操作符,使得字符串的操作变得简单而高效。本文将介绍string类的基础用法,包括增加、删除、修改和查找字符串的方法。


一、插入

1.中间插入

1、basic_string &insert( size_type index, const basic_string &str );
作用:在指定的位置插入另一个字符串到当前字符串中。
参数:index 表示插入位置的索引,str 是要插入的字符串。
返回值:返回修改后的字符串的引用。
示例代码如下:

std::string str = "Hello";
std::string insertStr = " World";
str.insert(5, insertStr);
// 结果为 "Hello World"

2、basic_string &insert( size_type index, const char *str );
功能:在指定的位置插入一个C风格字符串到当前字符串中。
参数:index 表示插入位置的索引,str 是要插入的C风格字符串。
返回值:返回修改后的字符串的引用。
示例代码

std::string str = "Hello";
const char* insertStr = " World";
str.insert(5, insertStr);
// 结果为 "Hello World"

3、basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );
功能:在指定的位置插入另一个字符串的一部分到当前字符串中。
参数:index1 表示插入位置的索引,str 是要插入的字符串,index2 表示要插入字符串的起始位置,num 表示要插入的字符个数。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
std::string insertStr = " World";
str.insert(5, insertStr, 1, 3);
// 结果为 "Hello Worllo"

4、basic_string &insert( size_type index, const char *str, size_type num );
功能:在指定的位置插入一个C风格字符串的一部分到当前字符串中。
参数:index 表示插入位置的索引,str 是要插入的C风格字符串,num 表示要插入的字符个数。
返回值:返回修改后的字符串的引用。

示例代码:

std::string str = "Hello";
const char* insertStr = " World";
str.insert(5, insertStr, 1, 3);
// 结果为 "Hello Worllo"

5、basic_string &insert( size_type index, size_type num, char ch );
功能:在指定的位置插入指定数量的字符到当前字符串中。
参数:index 表示插入位置的索引,num 表示要插入的字符个数,ch 表示要插入的字符。
返回值:返回修改后的字符串的引用。

std::string str = "Hello";
char ch = '-';
str.insert(5, 3, ch);
// 结果为 "Hello---"

2.尾巴插入

+=拼接

当使用 += 运算符对 std::string 进行拼接时,它会将右侧的字符串附加到左侧的字符串末尾,从而修改左侧字符串的值。

示例代码如下:

std::string str = "Hello";
std::string appendStr = " World";

str += appendStr;

std::cout << str << std::endl; // 输出:Hello World

appand

1、basic_string &append( const basic_string &str );
功能:将给定字符串附加到当前字符串的末尾。
参数:str 是要附加的字符串。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
std::string appendStr = " World";
str.append(appendStr);
// 结果为 "Hello World"

2、basic_string &append( const char *str );
功能:将给定的C风格字符串附加到当前字符串的末尾。
参数:str 是要附加的C风格字符串。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
const char* appendStr = " World";
str.append(appendStr);
// 结果为 "Hello World"

3、basic_string &append( const basic_string &str, size_type index, size_type len );
功能:将给定字符串的一部分附加到当前字符串的末尾。
参数:str 是要附加的字符串,index 表示要附加字符串的起始位置,len 表示要附加的字符个数。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
std::string appendStr = " World";
str.append(appendStr, 1, 3);
// 结果为 "Hello Wor"

4、basic_string &append( const char *str, size_type num );
功能:将给定C风格字符串的一部分附加到当前字符串的末尾。
参数:str 是要附加的C风格字符串,num 表示要附加的字符个数。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
const char* appendStr = " World";
str.append(appendStr, 1, 3);
// 结果为 "Hello Wor"

5、basic_string &append( size_type num, char ch );
功能:将指定数量的字符附加到当前字符串的末尾。
参数:num 表示要附加的字符个数,ch 表示要附加的字符。
返回值:返回修改后的字符串的引用。
示例代码:

std::string str = "Hello";
char ch = '-';
str.append(3, ch);
// 结果为 "Hello---"

总结

在C++标准模板库(STL)的众多容器中,string类是处理字符串的重要工具。它提供了丰富的函数和操作符,使得字符串的操作变得简单而高效。本文将介绍string类的基础用法,包括增加、删除、修改和查找字符串的方法。
在这里插入图片描述

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

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

相关文章

真机二阶段之堆叠技术

堆叠技术 --- 可以将多台真实的物理设备逻辑上抽象成一台 思科 -- VPC 华为 -- iStack和CSS 华三 -- IRF 锐捷 -- VSU iStack和CSS的区别&#xff1a; CSS --- 集群 --- 它仅支持将两台支持集群的交换机逻辑上整合成一台设备。 iStack --- 堆叠 --- 可以将多台支持堆叠的交换…

Agile Iteration Velocity

【agile iteration velocity】敏捷速度指的平均速度 第四次迭代结束速度&#xff1a; 76 / 4 19 第五次迭代结束速度&#xff1a; &#xff08;76 24 &#xff09; / 5 100 / 5 20

【地理专题】2023年最新全国A级景区数

数据来源&#xff1a;中国文化和旅游部时间跨度&#xff1a;2023年区域范围&#xff1a;全国范围数据字段&#xff1a; 景区名称&#xff1b;地址&#xff1b;等级&#xff1b;城市&#xff1b;经度&#xff1b;纬度 该图基于自然资源部地图技术审查中心标准地图服务网站下载…

The internal rate of return (IRR)

内部收益率 NPV(Net Present Value)_spencer_tseng的博客-CSDN博客

华为网络篇 OSPF的Silent-Interface-33

难度1复杂度1 目录 一、实验拓扑 二、实验步骤 三、实验过程 总结 一、实验拓扑 二、实验步骤 1.搭建如图所示的网络拓扑&#xff1b; 2.初始化各设备&#xff0c;配置相应的IP地址&#xff0c;测试直连网络的连通性&#xff1b; 3.整个网络配置OSPF协议&#xff0c;查看…

使用预制体画刷在游戏场景中快速布置预制体、粒子特效等

有时候在使用tilemap的时候&#xff0c;会希望在场景中添加更复杂的对象。 在2d-extras中&#xff0c;加入了预制件笔刷&#xff08;Prefab Brush&#xff09;&#xff0c;可以将游戏物体预制体作为瓦片&#xff0c;来方便的在游戏场景中快速的绘制。可以自动适应游戏物体的位置…

Docker容器:docker镜像的创建及dockerfile

Docker容器&#xff1a;docker镜像的创建及dockerfile案例 一.docker镜像的三种创建方法 创建镜像有三种方法&#xff1a;基于现有镜像创建、基于本地模板创建及基于dockerfile创建 1.基于现有镜像创建 1.1 启动镜像 #首先启动一个镜像&#xff0c;在容器里做修改 docker …

Linux笔试题(1)

1、以长格式列目录时&#xff0c;若文件test的权限描述为&#xff1a;drwxrw-r–&#xff0c;则文件test的类型及文件主的权限是__A____。 A.目录文件、读写执行 B.目录文件、读写 C.普通文件、读写 D.普通文件、读 在这个问题中&#xff0c;我们需要解析文件权限的描述&…

Java面向对象三大特性之多态及综合练习

1.1 多态的形式 多态是继封装、继承之后&#xff0c;面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式&#xff1a; 父类类型 变量名 new 子类/实现类构造器; 变量名.方法名(); 多态的前提&#xff1a;有继承关系&#xff0c;子类对象是可以赋…

Android11 中 LED 使用-RK3568

文章目录 前言原理图设备树驱动前言 现在我们来学习点亮LED 原理图 然后对应在核心板原理图上查找 Working_LEDEN_H_GPIO0_B7,如下图所示: 那么我们只要控制 GPIO0_B7 即可控制 led 的亮灭。 设备树 leds: leds {compatible = "gpio-leds";work_led: work {gpi…

AgentBench——AI智能体基准测试官方

ModaGPT 简介 排行榜 提交模型 提问 AgentBench是第一个系统性的基准测试,用于评估LLM作为智能体在各种真实世界挑战和8个不同环境中的表现。 Models

shell脚本——文件三剑客之grep

一.grep选项 -A<显示行数>&#xff1a;除了显示符合样式的那一列之外&#xff0c;并显示该行之后的内容&#xff0c;下几行内容&#xff0c;本行也会显示 -B<显示行数>&#xff1a;除了显示符合样式的那一行之外&#xff0c;并显示该行之前的内容&#xff0c;上几行…

回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介…

【脚踢数据结构】常见树总结(图码结和版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的…

UE4/5Niagara粒子特效之Niagara_Particles官方案例:1.5->2.3

目录 之前的文章&#xff1a; 1.5 Blend Attributes by Value 发射器更新 粒子生成 粒子更新 2.1 Static Beams ​编辑 发射器更新&#xff1a; 粒子生成 粒子更新 2.2 Dynamic Beams 没有开始模拟前的效果是&#xff1a; 开始模拟后的效果是&#xff1a; 发射器更新 …

shell脚本之数组

shell数组 数组和变量 变量&#xff1a;存储单个元素的内存空间 数组&#xff1a;存储多个元素的连续的内存空间&#xff0c;相当于多个变量的集合 数组和索引 索引的编号从0开始&#xff0c;属于数值索引 索引可支持使用自定义的格式&#xff0c;而不仅是数值格式&#xf…

FPGA原理与结构——RAM IP核的使用与测试

目录 一、前言 二、RAM IP核定制 1、RAM IP核 step1 打开vivado工程&#xff0c;点击左侧栏中的IP Catalog step2 在搜索栏搜索RAM&#xff0c;找到Block Memory Generator IP核&#xff1a; 2、IP核定制 step3 Baisc界面定制 step4 端口定制 step5 Other Options st…

Shell脚本 六 :免交互

文章目录 1.免交互的概念1.1什么是免交互 2.多行重定向2.1标准格式2.2注意事项2.3示例 3. expect免交互 &#xff08;需要安装&#xff09;3.1定义3.2 安装3.3命令格式3.4 执行expect脚本3.5 expect相关命令3.5.1 脚本解释器3.5.2 spaw3.5.3 expect3.5.4 send3.5.5 结束符3.5.6…

Vue3 用父子组件通信实现页面页签功能

一、大概流程 二、用到的Vue3知识 1、组件通信 &#xff08;1&#xff09;父给子 在vue3中父组件给子组件传值用到绑定和props 因为页签的数组要放在父页面中&#xff0c; data(){return {tabs: []}}, 所以顶部栏需要向父页面获取页签数组 先在页签页面中定义props用来接…

AMBA总线协议(2)——AMBA信号

一、前言 在之前的文章中我们已经对AMBA总线协议进行了一个简单的介绍&#xff0c;这篇文章我们来详细介绍AHB,APB,AXI协议的信号。对于AMBA总线协议有一个初步直观的认识。 二、AMBA信号 所有 AMBA 信号的命名都用名称的第一个字母来指示信号和哪个总线相关联。信号名称中用一…