新知识
例1.字符串查找
有s1和s2两个字符串,假设s1="abdabca",s2="abc"。请编写程序,查找s1字符串中是否包含有s2字符串。
01.C语言字符串查找函数
在C语言里面有一个叫strstr函数,专门负责字符串查找处理。
char s1[]="abdabca";
char s2[]="abc";
char* ret = strstr(s1,s2);
if(ret==NULL)
	cout<<"不包含"<<endl;
else
	cout<<"包含"<<endl;
大家尝试把第9行代码替换成cout<<ret;看看程序会输出什么结果。
02.C++语言字符串查找函数
在C++里是用string类型来存储字符串的,而string本身就自带有常有的字符串操作命令。
string s1="abdabca";
string s2="abc";
int idx = s1.find(s2,0);
if(idx<s1.size())
	cout<<"包含"<<endl;
else
	cout<<"不包含"<<endl;
find函数中第2个参数0,代表从s1的第0个元素开始查找;find函数的返回值是s2在s1的起始位置。大家可尝试把第7和第9行代码替换成cout<<idx;。看看会输出什么结果。
例2.字符串统计
有s1和s2两个字符串,假设s1="abdabcaabc",s2="abc"。请编写程序,统计s1字符串中有多少个s2字符串。我们先看下图。
	
	| 次数 | a | b | d | a | b | c | a | a | b | c | 
	| 1 | a | b | c |  |  |  |  |  |  |  | 
	| 2 |  | a | b | c |  |  |  |  |  |  | 
	| 3 |  |  | a | b | c |  |  |  |  |  | 
	| 4 |  |  |  | a | b | c |  |  |  |  | 
	| 5 |  |  |  |  |  |  | a | b | c |  | 
	| 6 |  |  |  |  |  |  |  | a | b | c | 
	
从上图,大家可以看到统计字串次数的流程了。下面我们直接用C++来实现这个程序。
	string s1="aabcdabca";
	string s2="abc";
	
	int pos=0;
	int n=0;
	
	while(pos<(s1.size()-s2.size())){	
		if(s1.find(s2,pos)<s1.size()){		
			n+=1;
			pos+=s2.size();		
		}
		else
			pos+=1;		
	}	
	cout<<n;
	思考一下:如果s1="abcaaabdaaaa",s2="aa";。程序会出现什么结果?
课后练习
请尝试用C语言改写例2程序。