当前位置: 首页 > 编程笔记 >

c++ string的erase删除方法

濮佑运
2023-03-14
本文向大家介绍c++ string的erase删除方法,包括了c++ string的erase删除方法的使用技巧和注意事项,需要的朋友参考一下

之前不是很清楚c++中string如何删除元素,现在记录一下。

(参考自 c++++ primer plus 第六版 模版类 string)

string中提供的成员函数可以用来删除字符串中的字符,这里主要介绍erase方法

erase方法原型

1. basic_string & erase(size_type pos=0, size_type n=npos);

即从给定起始位置pos处开始删除, 要删除字符的长度为n, 返回值修改后的string对象引用

示例[1]

#include<iostream>
#include<string>
using namespace std;

int main(){
 string str = "hello c++! +++";
 // 从位置pos=10处开始删除,直到结尾
 // 即: " +++"
 str.erase(10);
 cout << '-' << str << '-' << endl;
 // 从位置pos=6处开始,删除4个字符
 // 即: "c++!"
 str.erase(6, 4);
 cout << '-' << str << '-' << endl;
 return 0;
}

输出

2. iterator erase(const_iterator position)

删除迭代器位置处的单个字符, 并返回下个元素的迭代器

3. iterator erase(const_iterator first, const_iterator last)

删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器.

示例[2,3]:

#include<iostream>
#include<string>
using namespace std;

int main(){
 string str = "hello c++! +++";
 // 删除"+++"前的一个空格
 str.erase(str.begin()+10);
 cout << '-' << str << '-' << endl;
 // 删除"+++"
 str.erase(str.begin() + 10, str.end());
 cout << '-' << str << '-' << endl;
 return 0;
}

输出

补充

除了erase方法用于删除string中的元素, void pop_back();方法也可以用来删除元素, 但是只能删除string的最后一个元素

查找方法

在使用erase删除函数的时候,经常会和查找函数一起使用

*find*(**)系列方法参数可以是char 或者 string 类型, 为待查找的目标, 返回值为 size_type;当 查找不到目标时,返回值为 npos, 可以这样判断

string longer("That's a funny hat.");
//size_type loc1 = longer.find("hat"); // 存在
size_type loc1 = longer.find("hello"); //不存在
if (loc1 == string::npos)
 cout<< "not found" <<endl;

以上这篇c++ string的erase删除方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍c++ String去除头尾空格的方法,包括了c++ String去除头尾空格的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了c++ String去除头尾空格的方法,分享给大家供大家参考。具体实现方法如下: 实现该功能可使用string的find_first_not_of,和find_last_not_of方法,具体实现带如下: 希望本文所述对大家的C++程序设计有所帮

  • 本文向大家介绍JS删除String里某个字符的方法,包括了JS删除String里某个字符的方法的使用技巧和注意事项,需要的朋友参考一下 方法一 正则 关于JS删除String里的字符的方法,一般使用replace()方法。但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则。 这里用 new RegExp()这个方法创建正则,第一个参数“a”指定了正则表达式的模式或其他正

  • 擦除功能用于重置固定大小数组的值并释放动态数组的内存。 它的行为取决于数组的类型。 语法 (Syntax) Erase ArrayName 固定数字数组,数组中的每个元素都重置为零。 固定字符串数组,数组中的每个元素都重置为零长度“”。 对象数组,数组中的每个元素都重置为特殊值Nothing。 例子 (Example) 添加按钮并添加以下功能。 Private Sub Constant_demo

  • 本文向大家介绍C++删除链表中间节点的方法,包括了C++删除链表中间节点的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++删除链表中间节点的方法。分享给大家供大家参考,具体如下: 题目: 给定链表头结点head,实现删除链表的中间节点函数。 解题思路及代码: 快慢指针,快指针走两步,慢指针一步。 当快指针走到终点时,慢指针正好是链表中间节点,删除此节点即可。 链表结构定义: 算法

  • 本文向大家介绍C# 复制与删除文件的实现方法,包括了C# 复制与删除文件的实现方法的使用技巧和注意事项,需要的朋友参考一下 C# 复制与删除文件的实现方法 1、首先是复制文件 首先打开我们的对话框获得文件路径,当然也可以直接编写路径 然后是复制文件的方法买这里我写的是添加,是根据我的项目来的 MyFile是一个文件操作类,OpenFileDialog需要添加引用 string[] s = path

  • 在wxpython中,我希望有一个带有图片的窗口,该窗口会根据工具栏按钮的使用而改变图片的顶部的文本控件。当我单击工具栏按钮时,我将发布一个擦除背景事件,然后捕获擦除事件,并从那里重绘新的背景(基于此)。 大部分工作良好,除了文本控件停止绘制一旦我重画背景。它们还在那里,只是没有画出来。 下面是一个演示该问题的简化代码。如果运行此代码并单击按钮以切换是否绘制背景图像,则文本控件将消失。提示: 我如

  • 本文向大家介绍C++ 复制删除的目的,包括了C++ 复制删除的目的的使用技巧和注意事项,需要的朋友参考一下 示例 在标准中,有一些地方可以复制或移动对象以初始化对象。复制省略(有时称为返回值优化)是一种优化,通过该优化,在某些特定情况下,即使标准规定必须进行复制,也允许编译器避免复制或移动。 考虑以下功能: 根据标准的严格措辞,此函数将初始化一个临时std::string对象,然后将其复制/移动到

  • 本文向大家介绍C#实现安全删除文件目录的方法,包括了C#实现安全删除文件目录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现安全删除文件目录的方法。分享给大家供大家参考。具体分析如下: 1. 创建文件夹 (简单,没多考虑) 2. 删除所建文件夹:为防止删除过程中有其他进程引用该文件夹中文件,增加了对此意外情况的考虑。 在本例中,若删除过程中被其他进程引用,等待并循环5次尝试再