比如,字符串为,This is a (word123) .如果我查找word,判定为该字符串不存在,查找word123,则认为存在,找到后返回指向w字符位置位置的指针。(单词word123前后的字符如果是非数字和非字母则认为该字符串存在)解决问题立即给分,决不食言!!!!!!

解决方案 »

  1.   

    mfc 
    atl
    wtl
    ->CString : find()
    其他:
    可用stl::string::find()
    可以解决, 不过find()之后要手工判断以下
      

  2.   

    没有这样的函数,不过实现起来很简单,只要用CString::Find()找到要找的字符串,就可以得它前后的字符,只要前后的字符都不是数字或字母就OK啦
    int NewFind(CString strAll,CString strFind)
    {
    int nPos= strAll.Find(strFind);
    char per = strAll[nPos-1];
    char rear = strAll[nPos+strFind.GetLength()];
    if((per>='0' && per <=9)||(per>='a' && per<='z')||(per>='A' && per<='Z'))
    return -1;
    if((rear>='0' && rear <=9)||(rear>='a' && rear<='z')||(rear>='A' && rear<='Z'))
    return -1;
    return nPos;
    }}
      

  3.   

    CString str="This is a (word123)",str1="word",strLeft=" (",strRight=" )";
    BOOL bFind=FALSE;
    int j=0;
    while (!bFind) 
    {
    int i=str.Find(str1,j);
    BOOL bLeft=FALSE,bRight=FALSE;
    if(i!=-1)
    {
    if(i>0)
    {
    if(strLeft.Find(str[i-1])!=-1)
    {
    bLeft=TRUE;
    }
    }else
    {
    bLeft=TRUE;
    } if(i+str1.GetLength()<str.GetLength()-1)
    {
    char c=str[i+str1.GetLength()];
    if(strRight.Find(c)!=-1)
    {
    bRight=TRUE;
    }
    }else
    {
    bRight=TRUE;
    }
    if(bLeft&&bRight)
    {
    break;
    }else
    {
    j=i+1;
    }
    }else
    {
    break;
    }
    }