分享

模拟c++中的strstr函数

 孤步 2012-08-01

/************************************************************************/

/* 例子:请写出一个函数来模拟c++中的strstr函数:该函数的返回值是主传中字符子串的位

置以后的所有字符,请不要使用任何c程序已有的函数

 

 函数名: strstr   

 函数原型:extern char *strstr(char *str1, char *str2);   

 功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。   

 返回值:返回该位置的指针,如找不到,返回空指针。                            */

/************************************************************************/

string LeftSting(const string &Srcstr, const string &Substr)

{

       string Results("");

       int i = 0;

       while(i < Srcstr.size())

       {

              int j = i;

              int k = 0;

              while(k < Substr.size())

              {

                     if(Srcstr[j] == Substr[k])

                     {

                            j++;

                            k++;

                     }

                     else

                            break;

              }

 

              if(k == Substr.size())//找到了子串

              {

                     for(int t = i; t < Srcstr.size(); t++)

                            Results += Srcstr[t];

                     break;

              }

              else if(k == 0)//此时第一个不是匹配的

              {

                     i++;

              }

              else//此时已经匹配了k个字符

              {

                     i += k;

              }

       }

       return Results;

}

 

 

int main()

{

 

       string sub = "ask";  //解析删除的是指定字符a s k不是字符串"ask"所以将str中的每个字符都与sub中的字符比较

                                          //如果相等,则停止,比较下一个。因为删除的最好办法是把不删除的东西提取出来。

       string str = "askdaskaskdaskgasg";

      

       string str2 = LeftSting(str,sub);

       cout <<str2<<endl;


       return 0;

}

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多