C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本
下图是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"
注意事项
- 参数合法性:
pos
必须在[0, size()]
范围内,否则可能抛出std::out_of_range
异常。 - 内存分配:插入操作可能导致字符串扩容(重新分配内存)。
- 标准差异:
- C++11起部分方法返回值类型调整(如返回迭代器)。
总结
std::string::insert
提供了多种灵活的插入方式,覆盖从字符串片段到迭代器范围的操作。选择合适的方法可以高效处理字符串拼接、填充或动态修改需求。
相关文章:

C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本
下图是C标准库中 std::string 类提供的 insert 成员函数的不同重载版本,可点击C标准库获取 以下是std::string::insert各重载版本的功能及参数解释: 1. 插入完整字符串 string& insert(size_t pos, const string& str); 功能:在字…...

Qt window frame + windowTitle + windowIcon属性(3)
文章目录 window frame属性window frame的概念1. window frame的影响2. 图片演示3. 代码演示 API接口widget.cpp(测试代码) windowTitle属性API接口问题 注意点widget.cpp(属性用法) windowIcon属性API接口啥是窗口图标玩法1. 先…...
解决:VMware 虚拟机 Ubuntu 系统共享文件夹无法访问问题
以下是解决 VMware 虚拟机 Ubuntu 系统共享文件夹无法访问 问题的完整过程总结,按关键步骤和逻辑顺序梳理: 系统版本:Ubuntu 22.04.5 1. 确认 VMware Tools 已安装 验证方法:通过 ps -ef | grep vmtoolsd 检查是否存在 vmtools…...

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

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

【拯救小狗】2022-1-3
缘由c学校练习试题,求解决-编程语言-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画图
软件下载 【名称】:PS2025 v26.7 Photoshop2025AI生图扩充版 【大小】:4.9G 【语言】:简体中文 【安装环境】:Win10/Win11 【网盘下载链接】(务必手机注册): https://pan.quark.cn/s/51f5…...

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

ShenNiusModularity项目源码学习(30:ShenNius.Admin.Mvc项目分析-15)
广告管理页面用于新建、维护及删除系统CMS管理模块的广告信息,其后台控制器类AdvListController位于ShenNius.Admin.Mvc项目的Areas\Cms\Controllers内,页面文件位于同项目的Areas\Cms\Views\AdvList内,其中Index.cshtml页面为主页面…...

香港维尔利健康科技集团全面推进AI医疗落地,构建智慧健康管理新模式
在人工智能重塑全球医疗格局的新浪潮中,香港维尔利健康科技集团再次抢占技术高地,宣布正式启动“AI医疗健康场景融合工程”,将人工智能深度嵌入健康管理的全链条服务之中。该计划不仅涵盖设备智能化、诊疗辅助算法、用户健康行为建模等核心环…...
在 .NET 环境下实现跨进程高频率读写数据
目录 ✅ 技术选型说明 📦 示例场景 🧩 数据结构定义 🚦 核心同步机制 🧑💻 消费者实现 ⚡ 性能优化技巧 🛠 部署注意事项 📈 性能基准(理论值) 在 .NET 环境下…...
Arduino和STM32的区别详解
在嵌入式开发领域,Arduino和STM32是两类非常常见的微控制器平台。它们各有优缺点,适用于不同的开发需求。本文将从硬件架构、开发环境、易用性、性能、应用场景等方面对比两者的区别。 ## 一、硬件架构 ### Arduino - **核心芯片**:大多数Ar…...

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

bi软件是什么?bi软件是做什么用的?
目录 一、BI 软件是什么 1. 基本概念 2. 工作原理 二、BI 软件是做什么用的? 1. 精准洞察市场趋势 2. 优化企业战略规划 3. 辅助投资决策 三、如何选择合适的 BI 软件 1.功能匹配度 2.易用性和可扩展性 3.数据安全和稳定性 4.技术支持和服务 总结 生产…...
DeepSeek 赋能智能电网:从技术革新到全场景应用实践
目录 一、智能电网的发展现状与挑战二、DeepSeek 技术解析2.1 DeepSeek 技术原理2.2 DeepSeek 技术优势 三、DeepSeek 在智能电网中的具体应用3.1 设备管理智能化3.2 电网运行优化3.3 客户服务提升3.4 规划建设智能化3.5 经营管理高效化3.6 办公辅助便捷化 四、DeepSeek 在智能…...
xdvipdfmx:fatal: File ended prematurely. No output PDF file written.
今天忽然遇到:使用xelatex或lualatex编译,一直卡住,不报错,也无法生成PDF,主动停止编译后就报错 xdvipdfmx:fatal: File ended prematurely. No output PDF file written. 然后,之前能正常编译的一些文件…...
python进行while遍历的常见错误解析
Python中使用while循环进行遍历时,常见的错误类型及解析如下: 一、循环条件错误 错误示例: i 0 lst [1,2,3] while i < len(lst): # 实际索引范围应为[0,2]print(lst[i])i 1错误分析: 当 i 3 i3 i3时,条件 …...

锐化算子构建方法(机翻)
为了充分利用 GIP(通用图像处理单元)的并行处理能力,像素组的规模保持较小。每组像素数量的最小化可最大化可并行实现的独立内核数量。理想情况下,若处理单元可获取给定邻域的每个像素值,则内核可完全通用(…...
GO语言学习(七)
GO语言学习(七) 上一期我们简单地带大家手把手实践一下利用GO来构建服务器,大家是不是很不接里面为啥是这样操作的,所以这一期我们就来带领大家一起学习这些是如何实现web的工作,了解其底层实现方式,任何语…...

算法中的数学:费马小定理
1.同余式 定义:如果两个整数a,b模p的余数相同,那么a,b就是模p的同余式 记作: 性质: 1.同加性:若a和b同时加一个整数,那么他们加完之后的两个数模p仍为同余式 2.同乘性:若a和b同时乘一个整数&…...
【TypeScript】知识点梳理(四)
#没事去翻翻官网文档,其实有很多用法是我们还不知道的,官方资料总是最权威的,也推荐大家无聊看看各个官网hhh,不一定是记忆,但在某种场景下我们或许能想到还有多一种解决方式# noImplicitAny 当我们没有表明类型时&…...

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

LangGraph实现多智能体的方法
生活中我们常常需要同时处理多个任务,比如预订旅行时,既要订机票,又要订酒店。如果有一个智能助手能同时帮你搞定这些事情,那该有多方便啊!LangGraph的多智能体系统就能做到这一点。它就像一个超级助手团队,…...
wordpress主题开发中常用的12个模板文件
在WordPress主题开发中,有多种常用的模板文件,它们负责控制网站不同部分的显示内容和布局,以下是一些常见的模板文件: 1.index.php 这是WordPress主题的核心模板文件。当没有其他更具体的模板文件匹配当前页面时,Wor…...

聚铭安全管家平台2.0重磅发布——大模型智驱高效降本新方向
【聚铭安全管家平台2.0正式发布】在数字化安全威胁日益严峻的背景下,聚铭网络创新推出安全管家平台2.0,首创"云端智能区域中台本地终端"三级协同架构,深度融合AI安全大模型技术,实现威胁智能研判与自动化响应。该平台通…...
Android singleTop启动模式开启新页面
在Android开发中,Activity的启动模式(Launch Mode)对应用的行为和用户体验影响非常大。其中,singleTop是一种常见的启动模式,但它常常让开发者困惑:当一个Activity设置为singleTop时,如何才能重新打开一个新的页面(实例)? 本文将详细解析singleTop启动模式的机制,为…...

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

基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS
系列文章目录 第一章 下载源码 运行cornerstone3D example 第二章 修改示例crosshairs的图像源 第三章 vitevue3cornerstonejs项目创建 第四章 加载本地文件夹中的dicom文件并归档 第五章 dicom文件生成png,显示检查栏,序列栏 第六章 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. 最大子序和
贪心介绍 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 eg: 有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就…...