bool IString::isLike(IString s){ IString _localpattern = "*?"; IString::iterator _lcstrIterator; IString::iterator _lcptrIterator; int _strIndex = 0; _lcstrIterator = this->begin(); _lcptrIterator = s.begin(); while ( _lcptrIterator != s.end() && _lcstrIterator != this->end() ) { if ( *_lcptrIterator == '*' ) { if ( *_lcstrIterator == *(_lcptrIterator+1) ) { _lcptrIterator++; _lcptrIterator++; _lcstrIterator++; } else _lcstrIterator++; } if ( *_lcptrIterator == '?' ) { _lcptrIterator++; _lcstrIterator++; } if ( *_lcptrIterator != '*' && *_lcptrIterator != '?' ) { if ( *_lcptrIterator != *_lcstrIterator )return false; _lcptrIterator++; _lcstrIterator++; } } return true; }