比如constchar*s1="abcdfgfgdfgbhcdf";const char*s2="**fgd**f*bh*";就是匹配的,并且输出fgdfgbh。
bool pipei(const char*s1,const char*s2)
{
const char *beg=NULL;const char *t1=NULL,*t2=NULL;
while(*s2)
{
if(*s2=='*') s2++;
else
{
if(t1==NULL) t1=s2;
if(*(s2+1)=='*'||*(s2+1)=='\0') t2=s2;
if(t2)
{
int i=0;
while (*s1&&t1<=t2)
{
if(*s1==*t1){s1++;t1++;i++;}
else{t1-=i;s1-=i;s1++;i=0;}
}
if(t1<=t2) return false;
else if(!beg) beg=s1-i;
t1=t2=NULL;
}
s2++;
}
}
if(beg){string s(beg,s1);cout<<s<<endl;}
return true;
}
本文介绍了一种特殊的字符串匹配算法,该算法能够处理包含通配符'*'的模式串,通过比较两个字符串并找到匹配的部分。文章提供了详细的实现代码,展示了如何在源字符串中查找与模式串相匹配的子串。
1113

被折叠的 条评论
为什么被折叠?



