问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C++中使用erase方法删除字符串的详细解析

创作时间:
作者:
@小白创作中心

C++中使用erase方法删除字符串的详细解析

引用
1
来源
1.
http://www.cdweb.net/article/dsosid.html

在C++编程中,字符串操作是一个基础且重要的技能。本文将详细介绍如何使用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;
}

输出结果:

-hello c++!-hello c++!
  1. iterator erase(const_iterator position)
  • 删除迭代器位置处的单个字符,并返回下一个元素的迭代器。
  1. 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;
}

输出结果:

-hello c++!+++-hello c++!

补充说明

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

查找方法

在使用erase删除函数的时候,经常会和查找函数一起使用。find系列方法的参数可以是charstring类型,为待查找的目标,返回值为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++中利用erase方法对字符串进行删除的详细说明。希望这些内容能帮助你更好地理解和掌握C++字符串操作。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号