回 帖 发 新 帖 刷新版面

主题:字符串的模式匹配

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 )是什么意思?什么作用?

回复列表 (共1个回复)

沙发

p是指针,*p是指针所指向的字符。字符串中以结尾符'\0'结尾,值为0。在C/C++中,0表示假,其他数表示真。所以if(!*p) return i表示当p指向了字符串的末尾时,返回i。

我来回复

您尚未登录,请登录后再回复。点此登录或注册