要求:匹配成功就输出在第几个字符开始匹配成功,没有匹配到就输出匹配失败
#include<iostream>
using namespace std;
void substring(string text, string pattern)
{
int x = text.size();
int y = pattern.size();
int j = 0;
int i = 0;
int result = 0;
for(i=0;i<=x-y;i++)
{
int j = 0;//这里让j初始化是为了能在匹配中发现错误的时候,从头开始匹配
while ((text[i+j] == pattern[j])&&j<y)
{
j++;
}
if (j == y)
{
result = 1;//这里的result是为了让输出出现在循环外
}
}
if (result == 0)
cout << "匹配失败";
else cout << "在第"<<i<<"个字符处匹配成功";
}
int main(void)
{
string text, pattern;
cout << "请输入原本的字符串:" << endl;
cin >> text;
cout << "请输入你想要匹配的字符串:" << endl;
cin >> pattern;
substring(text, pattern);
return 0;
}
结果如下:
注意!!!:
1:此程序输入的字符串中不可带有空格
2:此程序仅适合在text字符串中只有一组字符串与pattern字符串匹配,如果出现多组,就不能统计出到底有几组。例如:text字符串:schoolandschool,pattern字符串:school 的情况,出现两组匹配的,但程序只能统计第二组school
如果有bug欢迎指出!