【C++】string 之 substr、insert、erase函数的学习

前言

之前两篇文章 我们学习了

assign、at、append函数
find、rfind、replace、compare函数

这些函数。接下来让我们继续学习其他函数

substr

两个参数
pos1,截取的开始位置
len,截取的子串长度

作用是在字符串中截取一段长度为len的子串

下面给出一个例子

#include<iostream>

using namespace std;

int main()
{
	string str = "Hello World";
	string ss = str.substr(2, 3);
	cout << ss;
	
	return 0;
}

运行结果:
在这里插入图片描述

insert

用法一:

两个参数
pos1:插入的位置
str:要插入的字符串

下面给出一个例子:

#include<iostream>

using namespace std;

int main()
{
	string str = "Hello World";
	string a;
	a = str.insert(3, "hh");
	cout << a << endl;

	return 0;
}

运行结果:
在这里插入图片描述

用法二

三个参数:
pos1:要插入的位置
n:要插入的元素个数
ch:要插入的元素

下面给出一个例子:

#include<iostream>
#include<string>

using namespace std;

int main()
{
	string str = "Nice To Meet You";
	string a, b;
	a = str.insert(0,"Hello ");
	cout << a << endl;
	
	b = str.insert(str.size(), 3, 'h');
	cout << b << endl;
	
	return 0;
}

运行结果:
在这里插入图片描述

erase

作用是删除字符串中的字符

使用erase函数需要包含algorithm头文件

用法1

两个参数:
pos1:下标,即开始删除的位置
n:删除的元素个数

下面给出一段代码:

#include<iostream>

using namespace std;

int main()
{
	string str1 = "Hello World";
	string a;
	a = str1.erase(0,3);
	cout << a << endl << str1 << endl;
	
	return 0;
}

运行结果:
在这里插入图片描述

用法2

pos:下标,要删除元素的下标

作用是删除pos位置的元素

下面给出一段代码:

#include<iostream>  
#include<algorithm>  
using namespace std;  
  
int main()  
{  
 string str1 = "Hello World";  
 string a;  
 //a = str1.substr(0, 1); // 取得要被删除的部分  
 str1.erase(str1.begin()); // 在原字符串上删除这部分
 cout << a << endl << str1 << endl; // 输出结果  
   
 return 0;  
}

运行结果:
在这里插入图片描述

注意

当你尝试这么写的时候

String a;
a = str1.erase(str1.begin());

程序会报错。

因为erase函数会删除给定位置开始到字符串末尾的所有字符,但它并不返回一个新的字符串。而是直接在原字符串上进行修改,并返回对原字符串的引用。

所以a其实是空的

用法3

pos1:删除的起始位置
pos2:删除的结束位置

下面给出一段代码:

#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
	string str1 = "Hello World";
	str1.erase(str1.begin() + 1, str1.end() - 1);
	cout << str1 << endl;
	
	return 0;
}

运行结果:
在这里插入图片描述

结语

介绍到这里,string中的基本函数就学习完了
希望你有所收获 我们下篇文章见~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值