您的位置:首页 > 其它

带有通配符的两个字符串匹配问题

2013-08-15 09:31 369 查看
比如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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: