C/C++库函数strstr和find实现子字符串查找

1 子字符串查找实现Demo

#include<iostream>

#include<string>

#include<cstring>

using namespace std;

int main()

{

char a[] = "abcddabc";

char b[] = "dda";

int j;

string str1(a);

string str2(b);

//方法一

int i = str1.find(str2); //返回即子字符串索引3

//方法二

char *rel = strstr(a, b); //首次出现地址,strstr保存的是ddabc

if (rel != NULL)

j = rel -a; //根据返回子字符串匹配结果输出索引位

return 0;

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2 子字符串查找之字符串数组strstr

上面实现子字符串查找主要利用两个库函数方法,第一个是字符串数组(char*)实现,string.h或者cstring头文件中strstr函数。第一个参数是主字符串,第二个参数是子字符串,如果存在返回首次出现的地址,所以需要利用一个字符串指针获取结果(切记:返回非直接索引位!);否则,返回NULL。

我们看看出现地址怎么转换到索引位,如下:

if (rel != NULL)

j = rel -a;

  • 1
  • 2

【注】:如果是从字符串中找出某个字符,则可以用strchr函数,用法和strstr相似。

3 子字符串查找之字符串string的find方法

 string头文件中find函数就是在主字符串中查找子字符串的索引。

int i = str1.find(str2); //返回即子字符串索引3

  • 1
  • 2

4 其它说明

子字符串查找如果手写,有暴力方法,KMP算法等等,

C/C++库函数strstr和find实现子字符串查找

相关推荐