一、find()函数:查找一个字符串是否包含特定另一个字符串

find()函数带有一个参数,两个参数和三个参数的情况。

find函数带一个参数,就是直接查找;

find函数带有两个参数,就是在被查找的字符串的某个特定位置开始查找;

find函数带有三个参数,就是在被查找的字符串的某个特定位置开始查找:查找字符串的前n个字符组成的字符串!

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	string s1="The first step is as good as half over.";
	string s2 = "step";
	//返回查找到的字符(串)s2在s1中的首地址
	int found = s1.find(s2);
	cout<<found<<endl;
	//---------------------------------------
	
	//返回查找到的字符(串)s2在s1中的首地址,此时,是从s1的第 n个字符开始寻找
	found = s1.find(s2,3);
	cout<<found<<endl;
	//如果不存在这个字符串,那么返回的是-1
	found = s1.find(s2,14);
	cout<<found<<endl;
	//-----------------------------------------
	
	found = s1.find("step");
	cout<<found<<endl;
	//-------------------------------------------
	
	//表示从 s1 中第9个字符开始寻找 “ism”的前两个字符
	found = s1.find("ism",9,2);
	cout<<found<<endl;
	//-------------------------------------------
	return 0;
}

运行结果:

10
10
-1
10
15

二、find_first_of()函数:查找字符第一次出现在被查找字符串中的位置

函数find_first_of() 查找在字符串中第1个出现的字符c,而函数find_last_of()查找最后一个出现的c。匹配的位置是返回值。如果没有匹配发生,则函数返回-1.

int find_first_of(char c, int start = 0):查找字符串中第1个出现的c,由位置start开始。

如果有匹配,则返回匹配位置;否则,返回-1。默认情况下,start为0,函数搜索整个字符串。

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	string s1="The first step is as good as half over.";
	string s2 = "step";
	//字符第一次出现在字符串中的位置 
	int found = s1.find_first_of("a");
	cout<<found<<endl;
	found = s1.find_first_of("as");
	cout<<found<<endl;
	cout<<"-----------------------"<<endl;
	int index=0;
	while((index=s1.find_first_of("s",index))!=-1) {
		cout<<index<<endl;
		index++;
	}
}

运行结果:

18
7
--------------------------
7
10
16
19
27

三、find_last_of()函数

int find_last_of(char c):查找字符串中最后一个出现的c。有匹配,则返回匹配位置;否则返回-1.

该搜索在字符末尾查找匹配,所以起始位置默认为字符串末尾,除非有参数指定起始位置。

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	string s1="The first step is as good as half over.";
	string s2 = "s";
	//从后往前找,与first相反而已 
	int index=s1.length();
	while((index=s1.find_last_of("s",index))!=-1) {
		cout<<index<<endl;
		index--;
	}
}

运行结婚:

27
19
16
10
7

四、string substr(int start,int count)函数

带一个参数和带两个参数

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	string s1="The first step is as good as half over.";
	string s2 = s1.substr(2,3);
	cout<<s2<<endl;
	s2=s1.substr(0,3);
	cout<<s2<<endl;
	//-----------------------------------------
	s2=s1.substr(4);
	cout<<s2<<endl;
}

运行结果:

e f
The
first step is as good as half over.

五、insert()函数

字符连接(+)是在字符串尾添加字符串。

insert()函数扩展了这个能力,允许在任意位置添加字符串。

void insert(int statr,const string& s): 将子串s放入字符串中,起始于位置start。插入操作增加了原始字符串的长度。

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	string s1="The first step ";
	string s2 = "is as good as half over.";
	string s= s1+s2;
	cout<<s<<endl;
	s1.insert(2,s2);
	cout<<s1<<endl;
}

运行结果:


The first step is as good as half over.
This as good as half over.e first step

六、void erase(int start=0,int count=-1)函数:

从start开始,从字符串中删除count个字符。

如果现有的字符串少于count个字符,或者count为-1,则删除到字符串尾部的所有字符。默认情况下,start为0,函数从字符串是起始位置开始删除字符串。默认情况下,函数也删除到字符串尾。