通配符匹配递归算法C++

Wildcard Matching Recursive Algorithm C++

我一直在用 C++ 编写递归通配符匹配算法。但我无法完成它。看看我目前写的。

?匹配任意字符,*匹配任意字符串

bool WildCardMatch(char *str, char *match){
 while (*match){
    if (*match =='?'){
        if (!*str){
            return false;
        }
        str++; 
        match++;
    }
    else if (*match == '*'){
        if (WildcardMatch(str, match + 1)){
            return true;
        }
        return false;
    }
 }
return !*str && !*match;
}

我的算法有什么问题?我该如何解决?或者谁能​​建议我更好的递归通配符匹配算法解决方案?

这里看一下this递归通配符匹配算法。它会解决你的烦恼。

bool WildcardMatch(const TCHAR *pszString, const TCHAR *pszMatch){
while (*pszMatch)
{
    if (*pszMatch == _T('?'))
    {
        if (!*pszString)
            return false;

        ++pszString;
        ++pszMatch;
    }
    else if (*pszMatch == _T('*'))
    {
        if (WildcardMatch(pszString, pszMatch + 1))
            return true;

        if (*pszString && WildcardMatch(pszString + 1, pszMatch))
            return true;

        return false;
    }
    else
    {
        if (::CharUpper(MAKEINTRESOURCE(MAKELONG(*pszString++, 0))) != ::CharUpper(MAKEINTRESOURCE(MAKELONG(*pszMatch++, 0))))
            return false;
    }
}

return !*pszString && !*pszMatch;
}