string.find()函数(C/C++)

文章目录

1.介绍

 A. 函数原型:
在这里插入图片描述
 B. 函数原型:
在这里插入图片描述

 find(str字符串或者单个字符,pos起始搜索位置),若成功找到匹配的子字符串则返回第一个成功匹配的子字符串的索引坐标(相对于str, 而不是相对于pos起始搜索位置),否则返回npos

2.分析

 A. 头文件:iostream

 B. 函数原理就是从pos位置开始搜索整个字符串,如果没有输入起始位置pos,则默认为0。找到能成功匹配的子字符串str,如果可以找到合法存在的子字符串位置,这里需要注意,返回这个位置的索引坐标相对于整个字符串的起始位置而言,而不是相对于起始搜索的位置,否则返回npos.

 C. npos: 这是一个特殊值,等于size_type可以表达的最大值,通常为无符号整型的最大值。确切的含义取决于上下文,通常用来标识字符串结束或者是函数作用错误指示符。在本函数当中就用来代表函数作用错误,即无法成功搜索到合法位置返回npos,这里返回的是unsigned long long的最大值18446744073709551615

3.使用

 A. 查找字符串

#include<cstdio>
#include<iostream>
using namespace std;

int main(){
    
    
    string s = "Today is a good day, hope you are happiness";

    int k1 = s.find("is"); // pos未输入则默认为0
    int k2 = s.find("is", 4);
    cout << k1 << ' ' << k2 << endl; // 6 6

    if(s.find("is", 10) == s.npos){
    
    
        cout << "无法成功找到返回的是unsigned long long 的最大值";
        cout << s.npos << endl; // 18446744073709551615
    }
}

 B. 查找字符

#include<cstdio>
#include<iostream>
using namespace std;

int main(){
    
    
    string s = "Today is a good day, hope you are happiness";

    int k1 = s.find('i'); // is 当中 i
    int k2 = s.find('i', 7); // happiness 当中 i
    cout << k1 << ' ' << k2 << endl; // 6  38
    cout << s[k1] << ' ' << s[k2] << endl; // i i

    if(s.find('z') == s.npos){
    
    
        cout << "不存在字母z" << endl;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_51566349/article/details/129530069