通配符C++实现

来源:互联网 发布:淘宝刷手论坛 编辑:程序博客网 时间:2024/06/06 14:07
#include<iostream>
using namespace std;
bool PathernMatch(char *pat,char *str)
{
 char *s=NULL;
 char *p=NULL;
 bool star=false;
 bool bBreak=false;
 do
 {
    bBreak=false;
    for(s=str,p=pat;*s;++s,++p)
    {
     switch(*p)
     {
     case '?':
      break;
     case '*':
      star=true; //出现*匹配符
      str=s;
      pat=p;
      if(!*++pat)
       return true;
      bBreak=true; //退出循环
      break;
     default:
      if(*s!=*p)
      {
       if(!star)
        return false;
       str++;
       bBreak=true;
      }
      break;
     }
     if(bBreak) //退出循环 重新开始循环
      break;
    }
    if(bBreak==false)
    {
    if(*p=='*')
     ++p;
    return (!*p);
    }
 } while(true);
}
int main()
{
   char a[100]="\\Device\\*\\Content.IE5\\index.dat";
   char b[100]="\\Device\\Harddiskvolume\\Content.IE5\\Femporary Internet Files\\Content.IE5\\index.dat";
   cout<<PathernMatch(a,b)<<endl;
   return 0; 
}
原创粉丝点击