主题:字符串的模式匹配
int String::Find ( String &pat ) const {
//穷举的模式匹配
char * p = pat.ch, * s = ch; int i = 0;
if ( *p && *s ) //当两串未检测完
while ( i <= curLen - pat.curLen )
if ( *p++ == *s++ ) //比较串字符
if ( !*p ) return i; //相等
else { i++; s = ch+i; p = pat.ch; } //对应字符不相等,对齐目标的下一位置,继续比较
return -1;
}
其中的if ( !*p )是什么意思?什么作用?
//穷举的模式匹配
char * p = pat.ch, * s = ch; int i = 0;
if ( *p && *s ) //当两串未检测完
while ( i <= curLen - pat.curLen )
if ( *p++ == *s++ ) //比较串字符
if ( !*p ) return i; //相等
else { i++; s = ch+i; p = pat.ch; } //对应字符不相等,对齐目标的下一位置,继续比较
return -1;
}
其中的if ( !*p )是什么意思?什么作用?