【STL】string之erase()/find()/string::npos

本文详细介绍了使用C++进行字符串操作的方法,包括如何利用find()函数查找子串位置,以及如何使用erase()函数删除字符串中特定部分。通过具体示例,展示了如何无限次删除字符串中的关键词,直至完全移除。

题意:在第一行输入一个句子,第二行输入一个关键词,然后在第一行句子中无限删去关键词直到不存在关键词为止并且输出。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a, b;
	getline(cin, a);
	getline(cin, b);
	while (a.find(b) != string::npos)//如果找到了(如果没有没找到)
	{
		a.erase(a.find(b), b.length());
	}
	cout << a;
	return 0;
}

这里我们运用到了string中find()函数的用法.
a.find()返回首字母下标

string::npos表示没找到的意思
查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是 strA.find(strB) != string:npos其中string:npos是个特殊值,说明查找没有匹配

接下来是关于string中erase()函数的用法:

#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;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值