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算法等等,