C++ strstr函数 C++中strstr函数的实现方法总结

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C++ strstr函数 C++中strstr函数的实现方法总结

默伊清风   2021-03-28 我要评论
想了解C++中strstr函数的实现方法总结的相关内容吗,默伊清风在本文为您仔细讲解C++ strstr函数的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C++,strstr函数,C++,strstr函数如何使用,下面大家一起来学习吧。

C++中strstr函数的实现方法总结

函数说明:

包含文件:string.h

函数名: strstr

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

功能:从字符串str1中查找是否有字符串str2, 如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。

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

方法一:

#include <iostream> 
#include <assert.h> 
using namespace std; 
 
char* My_strstr(char *src,char *substr) 
{ 
  assert(src != NULL && substr != NULL); 
 
  unsigned int size = strlen(src); 
  for(int i = 0; i < size; ++i,++src) 
  { 
    char *p = src; 
    for(char *q = substr;;p++,q++) 
    { 
      if(*q == '\0')  //在src中找到连续的substr子串停止并返回 
      { 
        return src; 
      } 
      if(*q != *p) 
      { 
        break; 
      } 
    } 
  } 
 
  return NULL; 
} 
 
int main() 
{ 
  char *res = My_strstr("abcdefg","cde"); 
  if(res != NULL) 
  { 
    cout<<"exist:"<<res<<endl; 
  } 
  else 
  { 
    cout<<"no exist!"<<endl; 
  } 
  return 0; 
} 

方法二:

#include <iostream> 
#include <assert.h> 
using namespace std; 
char* My_strstr(const char* s1,const char* s2) 
{ 
  int n; 
  if(*s2) 
  { 
    while(*s1) 
    { 
      for(n=0;*(s1+n)==*(s2+n);n++) 
      { 
        if(!*(s2+n+1)) 
          return (char*)s1; 
      } 
      s1++; 
    } 
    return NULL; 
  } 
  else 
    return (char*)s1; 
} 
 
int main() 
{ 
  char *res = My_strstr("abcdefg","cde"); 
  if(res != NULL) 
  { 
    cout<<"exist:"<<res<<endl; 
  } 
  else 
  { 
    cout<<"no exist!"<<endl; 
  } 
  return 0; 
} 



方法三:

#include <iostream> 
#include <assert.h> 
using namespace std; 
char* My_strstr(const char* s1,const char* s2) 
{ 
  const char *p=s1; 
  const size_t len=strlen(s2); 
  for(;(p=strchr(p,*s2))!=0;p++)// strchr查找字符串s中首次出现字符c的位置 
  { 
    if(strncmp(p,s2,len)==0) 
    { 
      return(char*)p; 
    } 
  } 
  return(0); 
} 
int main() 
{ 
  char *res = My_strstr("abcdefg","cde"); 
  if(res != NULL) 
  { 
    cout<<"exist:"<<res<<endl; 
  } 
  else 
  { 
    cout<<"no exist!"<<endl; 
  } 
  return 0; 
} 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们