C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本

news2025/5/25 7:56:24

下图是C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本,可点击C++标准库获取
在这里插入图片描述
以下是std::string::insert各重载版本的功能及参数解释:


1. 插入完整字符串

string& insert(size_t pos, const string& str);  
  • 功能:在字符串的pos位置插入另一个字符串str
  • 示例
    std::string s = "Hello";  
    s.insert(3, "XYZ"); // 结果:"HelXYZlo"  
    

2. 插入子字符串

string& insert(size_t pos, const string& str, size_t subpos, size_t sublen);  
  • 功能:在字符串的pos位置插入str中从subpos开始的sublen个字符。
  • 注意:若sublen超过str长度,则取到str末尾。
  • 示例
    std::string s = "Hello";  
    std::string str = "ABCDE";  
    s.insert(2, str, 1, 3); // 插入"BCD",结果:"HeBCDllo"  
    

3. 插入C风格字符串

string& insert(size_t pos, const char* s);  
  • 功能:在pos位置插入以空字符结尾的C风格字符串s
  • 示例
    std::string s = "Hello";  
    s.insert(4, "XYZ"); // 结果:"HellXYZo"  
    

4. 插入指定长度的字符数组

string& insert(size_t pos, const char* s, size_t n);  
  • 功能:在pos位置插入字符数组s的前n个字符(即使包含\0也会插入)。
  • 示例
    std::string s = "Hello";  
    s.insert(1, "ABCD", 2); // 插入"AB",结果:"HABello"  
    

5. 填充多个相同字符

string& insert(size_t pos, size_t n, char c);  
  • 功能:在pos位置插入n个字符c
  • 示例
    std::string s = "Hello";  
    s.insert(3, 4, 'X'); // 结果:"HelXXXXlo"  
    

6. 通过迭代器插入多个字符

void insert(iterator p, size_t n, char c);  // C++98中为void,C++11起返回迭代器  
  • 功能:在迭代器p指向的位置插入n个字符c
  • 注意:C++11后返回值改为指向插入的第一个字符的迭代器。
  • 示例
    std::string s = "Hello";  
    s.insert(s.begin() + 2, 3, 'Z'); // 结果:"HeZZZllo"  
    

7. 通过迭代器插入单个字符

iterator insert(iterator p, char c);  
  • 功能:在迭代器p指向的位置插入单个字符c,返回指向插入字符的迭代器。
  • 示例
    std::string s = "Hello";  
    auto it = s.insert(s.begin() + 1, 'X'); // 结果:"HXello",it指向'X'  
    

8. 通过迭代器范围插入序列

template <class InputIterator>  
void insert(iterator p, InputIterator first, InputIterator last);  
  • 功能:在迭代器p指向的位置插入范围[first, last)内的字符序列。
  • 示例
    std::string s = "Hello";  
    std::vector<char> vec {'A', 'B', 'C'};  
    s.insert(s.begin() + 3, vec.begin(), vec.end()); // 结果:"HelABClo"  
    

注意事项

  1. 参数合法性pos必须在[0, size()]范围内,否则可能抛出std::out_of_range异常。
  2. 内存分配:插入操作可能导致字符串扩容(重新分配内存)。
  3. 标准差异
    • C++11起部分方法返回值类型调整(如返回迭代器)。

总结

std::string::insert提供了多种灵活的插入方式,覆盖从字符串片段到迭代器范围的操作。选择合适的方法可以高效处理字符串拼接、填充或动态修改需求。

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

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

相关文章

Qt window frame + windowTitle + windowIcon属性(3)

文章目录 window frame属性window frame的概念1. window frame的影响2. 图片演示3. 代码演示 API接口widget.cpp&#xff08;测试代码&#xff09; windowTitle属性API接口问题 注意点widget.cpp&#xff08;属性用法&#xff09; windowIcon属性API接口啥是窗口图标玩法1. 先…

Dify源码学习

文章目录 1 大模型基本原理1.1 model_context_tokens、max_tokens和prompt_tokens1.1.1 三者之间的关系1.1.2 总结对比 2 Dify源代码2.0 前后端代码跑起来【0】准备开发环境【1】下载代码【2】运行后端&#xff08;1&#xff09;Start the docker-compose stack&#xff08;2&a…

静态网站部署:如何通过GitHub免费部署一个静态网站

GitHub提供的免费静态网站托管服务可以无需担心昂贵的服务器费用和复杂的设置步骤&#xff0c;本篇文章中将一步步解如何通过GitHub免费部署一个静态网站&#xff0c;帮助大家将创意和作品快速展现给世界。 目录 了解基础情况 创建基础站点 在线调试站点 前端项目部署 部署…

【拯救小狗】2022-1-3

缘由c学校练习试题&#xff0c;求解决-编程语言-CSDN问答 void 拯救小狗() {//缘由https://ask.csdn.net/questions/7622294?spm1005.2025.3001.5141int d 0, g 0, tfh[100][3]{}, x 0, c 10, dd d;std::cin >> d >> g; dd d;while (x < g && d…

PS2025 v26.7 Photoshop2025+AI生图扩充版,支持AI画图

软件下载 【名称】&#xff1a;PS2025 v26.7 Photoshop2025AI生图扩充版 【大小】&#xff1a;4.9G 【语言】&#xff1a;简体中文 【安装环境】&#xff1a;Win10/Win11 【网盘下载链接】&#xff08;务必手机注册&#xff09;&#xff1a; https://pan.quark.cn/s/51f5…

怎么开发一个网络协议模块(C语言框架)之(三) 全局实例

1. gVrrpInstance 是什么? 这是 VRRP 全局控制结构体,命名为 vrrpGlbInstance_t,定义了整个协议运行时的 内核资源、全局状态、各类对象池、AVL 树、计时器、套接字等。 它本质上是一个单例(singleton),用于全局访问 VRRP 实例、资源、统计、socket 等。 vrrpGlbInsta…

ShenNiusModularity项目源码学习(30:ShenNius.Admin.Mvc项目分析-15)

广告管理页面用于新建、维护及删除系统CMS管理模块的广告信息&#xff0c;其后台控制器类AdvListController位于ShenNius.Admin.Mvc项目的Areas\Cms\Controllers内&#xff0c;页面文件位于同项目的Areas\Cms\Views\AdvList内&#xff0c;其中Index.cshtml页面为主页面&#xf…

香港维尔利健康科技集团全面推进AI医疗落地,构建智慧健康管理新模式

在人工智能重塑全球医疗格局的新浪潮中&#xff0c;香港维尔利健康科技集团再次抢占技术高地&#xff0c;宣布正式启动“AI医疗健康场景融合工程”&#xff0c;将人工智能深度嵌入健康管理的全链条服务之中。该计划不仅涵盖设备智能化、诊疗辅助算法、用户健康行为建模等核心环…

选择合适的Azure数据库监控工具

Azure云为组织提供了众多服务&#xff0c;使其能够无缝运行应用程序、Web服务和服务器部署&#xff0c;其中包括云端数据库部署。Azure数据库能够与云应用程序实现无缝集成&#xff0c;具备可靠、易扩展和易管理的特性&#xff0c;不仅能提升数据库可用性与性能&#xff0c;同时…

bi软件是什么?bi软件是做什么用的?

目录 一、BI 软件是什么 1. 基本概念 2. 工作原理 二、BI 软件是做什么用的&#xff1f; 1. 精准洞察市场趋势 2. 优化企业战略规划 3. 辅助投资决策 三、如何选择合适的 BI 软件 1.功能匹配度 2.易用性和可扩展性 3.数据安全和稳定性 4.技术支持和服务 总结 生产…

锐化算子构建方法(机翻)

为了充分利用 GIP&#xff08;通用图像处理单元&#xff09;的并行处理能力&#xff0c;像素组的规模保持较小。每组像素数量的最小化可最大化可并行实现的独立内核数量。理想情况下&#xff0c;若处理单元可获取给定邻域的每个像素值&#xff0c;则内核可完全通用&#xff08;…

算法中的数学:费马小定理

1.同余式 定义&#xff1a;如果两个整数a,b模p的余数相同&#xff0c;那么a,b就是模p的同余式 记作&#xff1a; 性质&#xff1a; 1.同加性&#xff1a;若a和b同时加一个整数&#xff0c;那么他们加完之后的两个数模p仍为同余式 2.同乘性&#xff1a;若a和b同时乘一个整数&…

【Python 算法零基础 4.排序 ③ 插入排序】

目录 一、引言 二、算法思想 三、算法分析 1.时间复杂度 2.空间复杂度 3.算法的优点和缺点 ① 算法的优点 ② 算法的缺点 四、实战练习 1491. 去掉最低工资和最高工资后的工资平均值 思路与算法 ① 插入排序算法 (insertSort 方法) Ⅰ、初始化 Ⅱ、遍历未排序元素 Ⅲ、元素后移…

LangGraph实现多智能体的方法

生活中我们常常需要同时处理多个任务&#xff0c;比如预订旅行时&#xff0c;既要订机票&#xff0c;又要订酒店。如果有一个智能助手能同时帮你搞定这些事情&#xff0c;那该有多方便啊&#xff01;LangGraph的多智能体系统就能做到这一点。它就像一个超级助手团队&#xff0c…

聚铭安全管家平台2.0重磅发布——大模型智驱高效降本新方向

【聚铭安全管家平台2.0正式发布】在数字化安全威胁日益严峻的背景下&#xff0c;聚铭网络创新推出安全管家平台2.0&#xff0c;首创"云端智能区域中台本地终端"三级协同架构&#xff0c;深度融合AI安全大模型技术&#xff0c;实现威胁智能研判与自动化响应。该平台通…

使用注解动态映射:根据实体List列表动态生成Excel文件

我们一般通过POI来生成对应的Excel文件&#xff0c;绝大多数情况是需要手动编写单元格内容&#xff0c;然后顺序填充值&#xff0c;今天我们将动态根据实体来生成Excel表头&#xff0c;同时自动填充内容。 文章目录 1. 定义注解2. 实体类应用注解3. 动态导出工具类 1. 定义注解…

基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS

系列文章目录 第一章 下载源码 运行cornerstone3D example 第二章 修改示例crosshairs的图像源 第三章 vitevue3cornerstonejs项目创建 第四章 加载本地文件夹中的dicom文件并归档 第五章 dicom文件生成png&#xff0c;显示检查栏&#xff0c;序列栏 第六章 stack viewport 显…

【循环位运算——uint32,DP】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; using uint unsigned;const int N 1010;ll f[N][N]; uint a[N]; int n, m;int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for(int i 1; i < n; i)cin …

贪心介绍 LeetCode 455.分发饼干 LeetCode 376. 摆动序列 LeetCode 53. 最大子序和

贪心介绍 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 eg: 有一堆钞票&#xff0c;你可以拿走十张&#xff0c;如果想达到最大的金额&#xff0c;你要怎么拿&#xff1f; 指定每次拿最大的&#xff0c;最终结果就是拿走最大数额的钱。每次拿最大的就…

Postgresql 数据库体系架构

1 postgresql 软件目录 rootu24-pg-110:~# tree -L 1 /usr/local/postgresql-17/ /usr/local/postgresql-17/ ├── bin #可执行二进制文件 ├── include ├── lib └── share 2 数据库目录及文件 #目录结构 base --每个数据库的子目录 global --数据库集簇范…