c++string的常见函数

因为刷leetcode会需要用到一些c++已经实现的函数功能,所以在此记录,以便复习巩固。
参考文章连接:
C++中string类型的erase()函数详解
C++ string类的insert函数的介绍及使用

string的erase函数()

1 删除指定位置的字符

通过迭代器来删除指定字符

iterator erase (iterator p);

int main(){string s = "123456789";s.insert(2,"p");//输出:12p3456789cout << s<<endl;s.erase(s.begin()+2);//输出:123456789cout << s<<endl;
}

2 删除指定长度的字符串

通过字符串的索引,和长度来删除

string& erase(size_t pos=0, size_t len = npos);

int main(){string s = "123456789";s.insert(2,"p");cout << s<<endl;//输出:12p3456789s.erase(2,1);cout << s<<endl;//输出:123456789
}

注意:如果传入的是索引,长度不穿,那么就会把索引后的元素都删除

int main(){string s = "123456789";s.insert(2,"p");cout << s<<endl;//输出:12p3456789s.erase(2);cout << s<<endl;//输出:12
}

3 删除指定范围的字符串

通过首尾两个迭代器来删除

iterator erase (iterator first, iterator last);

int main(){string s = "123456789";s.erase(s.begin()+2,s.end()-2);cout << s<<endl;//输出:1289
}

string的insert函数()

1 指定位置插入字符(char)

(1)string &insert(int p0, int n, char c); 功能:在p0处插入n个字符c 返回值:插入字符串后的结果
(2)void insert(iterator it, int n, char c); 功能:在it处插入n个字符c
(3)iterator insert(iterator it, char c) 功能:在it处插入字符c 返回值:插入字符的位置

int main(){string s = "123456789";s.insert(0,1,'p');cout << s<<endl;//输出:p123456789string s1 = "123456789";s1.insert(0,2,'p');cout << s1<<endl;//输出:pp123456789string s2 = "123456789";s2.insert(s2.begin(),'p');cout << s2<<endl;//输出:p123456789string s3 = "123456789";s3.insert(s3.begin(),2,'p');cout << s3<<endl;//输出:pp123456789
}

2 指定位置插入字符串(string)

(1)string &insert(int p0,const string &s);
功能:在p0位置插入字符串s
返回值:插入字符串后的结果
(2)string &insert(int p0,const string &s, int pos, int n);
功能:在p0位置插入字符串s从pos开始的连续n个字符
返回值:插入字符串后的结果

int main(){string s1= "1234";string s2= "5678";s1.insert(4,s2);cout << s1 << endl;//输出:12345678string s3= "1234";string s4= "5678";s3.insert(4,s2,0,2);cout << s3 << endl;//输出:123456
}

3 根据迭代器插入字符串

(1)void insert(iterator it, const_iterator first, const_iteratorlast);
功能:在it处插入从first开始至last-1的所有字符

int main(){string s1= "1234";string s2= "5678";s1.insert(s1.end(),s2.begin(),s2.end());cout << s1 << endl;//输出:12345678
}

总结

插入的操作需要记住的是:

  1. 如果提供的位置是字符串的索引,那么插入操作是把这个索引包含进行插入
  2. 如果提供的是字符串的迭代器,那么插入操作也是把这个迭代器包含进行插入,这也是为什么在字符串s1末尾进行插入的时候,提供的迭代器是s1.end()(指向s1尾部元素的下一个元素地址,如果提供s1.end()-1就会把最后一个元素推到新字符串的最后一个元素)。例子:
int main(){string s1= "1234";string s2= "5678";s1.insert(s1.end()-1,s2.begin(),s2.end());cout << s1 << endl;//输出:12356784
}

总的来说,需要注意insert这个函数操作的范围。

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

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

相关文章

华为Mate 70系列,将首发搭载纯血鸿蒙正式版,第四季度登场

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 6月22日消息&#xff0c;华为在HDC 2024上已经宣布&#xff0c;HarmonyOS NEXT开启开发者先锋用户Beta测试。 首批覆盖Mate 60系列、Mate X5系列、MatePad Pro 13.2英寸。 根据官方公布的时间表&…

模板的概念及其在C++中的应用

模板是C中一个强大的特性&#xff0c;它允许程序员定义与类型无关的函数或类&#xff0c;从而在编译时根据具体类型生成特定的代码。模板的出现极大地提高了C代码的可重用性和灵活性。 模板的概念 模板是C实现泛型编程的一种工具。泛型编程是一种编程范式&#xff0c;其中算法…

线程简介及其函数使用实例(gcc *.c -lpthread)

1.概念 线程&#xff08;LWP(Light Weight process)&#xff09; 线程是轻量级的进程&#xff0c;&#xff08;是比进程粒度更小的执行单元&#xff09;进程是分配资源的最小单位&#xff08;0-3G&#xff09;&#xff08;PS&#xff1a;一辆马车8匹马 进程 其中的一个马是线程…

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器(保姆级教程,简单易懂,轻松上手)

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、Sublime Text 安装出现“软件已损坏&#xff0c;无法打开。要移到废纸篓”问题&#xff0c;解决办法&#xff1a; 2、汉化补丁安装3、输入注册码4、查询使用期限 安装完成&#xff01;&#xff01;&#xff01; 效果 一、下…

【牛客深信服总结】

1.反转链表 2.协议 交换机路由器 3.手写代码&#xff0c;一个二叉树&#xff0c;从根节点到叶子结点算一条路径&#xff0c;打印出所有路径。 4.一些数据结构相关的问题&#xff0c;包括栈和队列的应用&#xff0c;链表和数组的区别&#xff0c;最大堆和最小堆&#xff0c;动态…

OpenCV机器学习-人脸识别

一 基本概念 1 计算机视觉与机器学习的关系 计算机视觉是机器学习的一种应用&#xff0c;而且是最有价的应用。 2 人脸识别 哈尔(haar)级联方法 Harr是专门为解决人脸识别而推出的&#xff1b; 在深度学习还不流行时&#xff0c;Harr已可以商用&#xff1b; 深度学习方法&am…

示例:WPF中如何绑定ContextMenu和Menu

一、目的&#xff1a;开发过程中&#xff0c;有些模块的右键ContextMenu菜单是需要动态显示的&#xff0c;既是根据不同条件显示不同的菜单&#xff0c;很多是通过代码去生成ContextMenu的MenuItem&#xff0c;本文介绍通过绑定的方式去加载ContextMenu&#xff0c;Menu菜单栏的…

【操作系统】期末复习,一篇就够了!【全面】

并发是指多个事件在同一时间间隔内发生 并行是指多个事件在同一时刻发生 设计实时操作系统时&#xff0c;首先应该考虑的是&#xff08; &#xff09; B、实时性和可靠性 .单道批处理系统的主要缺点是&#xff08; &#xff09; A、CPU利用率不高 批处理系统的主要缺点是&…

家政预约小程序14权限配置

目录 1 创建用户2 创建角色3 启用登录4 实现退出总结 我们现在小程序端的功能基本开发好了&#xff0c;小程序开发好之后需要给运营人员提供管理后台&#xff0c;要分配账号、配置权限&#xff0c;我们本篇就介绍一下权限如何分配。 1 创建用户 在微搭中&#xff0c;用户分为内…

简单了解ESD模型与TLP曲线

上文讲了ESD和EOS的区别&#xff0c;说实话远不止那些。今日再稍加深入的介绍ESD。 一 ESD原理 ESD-Electro Static Discharge静电放电&#xff0c;具有不同静电电位的物体互相靠近或者直接接触引起的电荷转移。正常情况下&#xff0c;物体内部的正负电荷是相等的&#xff0c…

Simple-STNDT使用Transformer进行Spike信号的表征学习(二)模型结构

文章目录 1. 位置编码1.2 EncoderLayer1.3 Encoder1.4 STNDT 1. 位置编码 model.py import torch import torch.nn as nn import torch.nn.functional as F from torch.nn import TransformerEncoder, TransformerEncoderLayer, MultiheadAttention import math UNMASKED_LAB…

RMDA通信1:通信过程和优势,以太网socket为何用户空间拷贝到内核空间

视频分享&#xff1a; 1.1 RDMA基本原理和优势&#xff0c;以太网socket通信为什么要用户空间拷贝到内核空间_哔哩哔哩_bilibili 一、以太网socket通信 1.1 以太网socket通信过程 1、发送端发起一次通信操作&#xff0c;数据由用户空间拷贝到内核空间。拷贝由CPU完成&#x…

Java基础--AOP--1.概述

一、AOP简介 AOP&#xff08;Aspect Oriented &#xff09;即为面向切面编程&#xff0c;也可称为面向方法编程&#xff0c;是方法增强的一种途径&#xff0c;通常可用于记录操作日志、权限空值、事务管理等等;Spring框架中的事务底层就是AOP。 二、AOP的组成 1、连接点&…

【YOLO 系列】基于YOLO V8的车载摄像头交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

前言 随着智能交通系统的发展&#xff0c;交通信号灯的准确识别对于提高道路安全和交通效率具有至关重要的作用。传统的交通信号灯识别方法依赖于固定的传感器和摄像头&#xff0c;存在安装成本高、维护困难等问题。为了解决这些问题&#xff0c;我们启动了这个项目&#xff0…

中文邮件模板之向论文的作者咨询论文相关问题

目录 1. 内容 2. 邮件昵称 3. 格式很重要&#xff01; 1. 内容 尊敬的&#xff1a; 您好&#xff0c;很抱歉在您百忙之中打扰您。 我是大学的一名硕士生&#xff0c;最近在做项目【】&#xff0c;您发表的论文【】给了我很大的启发。 论文中没有给出具体参数&#xff0c;如和…

React+TS 从零开始教程(2):简中简 HelloWolrd

源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 这一节&#xff0c;我们来见识ReactTS的威力&#xff0c;开始上手开发第一个组件&#xff0c;什么组件呢&#xff1f; 当然是简中简的 HelloWolrd组件啦。 在src下创建一个components&#xff0c;然后新建Hello.tsx …

CVPR2023论文速览Transformer

Paper1 TrojViT: Trojan Insertion in Vision Transformers 摘要原文: Vision Transformers (ViTs) have demonstrated the state-of-the-art performance in various vision-related tasks. The success of ViTs motivates adversaries to perform backdoor attacks on ViTs.…

C++系统相关操作3 - 获取操作系统的平台类型

1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 C 系统调用 操作系统平台类型 跨平台 2. sysutil.h #pragma once#include <cstdint> #include <string>namespace cutl {/*** brief Operating system platform type.**/enum…

详解 ClickHouse 的语法优化规则

ClickHouse 的 SQL 优化规则是基于 RBO(Rule Based Optimization) 一、count 优化 --1. count()、count(1) 和 count(*)&#xff0c;且没有 where 条件&#xff0c;则会直接使用 system.tables 的 total_rows EXPLAIN SELECT count()FROM datasets.hits_v1;--2. count(column)…

一款有趣的Python库绘制风向图,小白容易上手

利用 Python 绘制风向图 绘制风向图通常使用 matplotlib 库的 Barbs 类来实现.这个类用于绘制风向和风速的矢量场,可以实现不同的风向图风格. 安装 ## 命令安装 matplotlib 库&#xff1a;pip install matplotlib用法 下面是一个简单的示例代码,绘制风向图&#xff1a; 使…