string.find()函数

find()

find(‘a’),从字符串的0号下标开始查找(包括0)。
find(‘a’,k),从字符串的k号下标开始查找(包括k)。
其中参数也可以为"a",即既可以查找字符,也可以查找字符串
返回类型:size_t,即一个无符号整数(按打印出来的算)。若查找成功,返回按查找规则找到的第一个字符或子串的位置;若查找失败,返回npos,即-1(打印出来为4294967295)。通过判断返回的pos!=string::npos来说明是否找到子串,也可以通过判断pos!=-1来说明是否找到子串。

应用举例:

//找出字符串str中所有的"abc"(输出位置),若未找到,输出"not find!"
#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str("babccbabcaabcccbabccabcabcabbabcc");
    int num = 0;
    size_t fi = str.find("abc", 0);    
    while (fi!=str.npos)
    {
        cout << fi << "   ";
        num++;
        fi = str.find("abc", fi + 1);
    }
    if (0 == num)
        cout << "not find!";
    cout << endl;
    return 0;
}
//运行结果:
//1   6   10   16   20   23   29

rfind()

rfind()与find()很相似,差别在于查找顺序不一样,rfind()是从指定位置起向前查找,直到串首。例如,上例中的st1.rfind(‘a’,7)一句,就是从st1的位置7(st1的最后一个字符b)开始查找字符a,第一次找到的是倒数第2个字符a,所以返回6。

find_first_of()

在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回npos。
参数:find_first_of(string,pos),若pos不存在,则默认从0号下标开始查找
例:
string str1(“bcgjhikl”);
string str2(“kghlj”);
cout << str1.find_first_of(str2, 0) << endl;//从str1的第0个字符b开始找,b不与str2中的任意字符匹配;再找c,c不与str2中的任意字符匹配;再找g,g与str2中的g匹配,于是停止查找,返回g在str1中的位置2

find_last_of()

该函数与find_first_of()函数相似,只不过查找顺序是从指定位置向前
参数:find_last_of(string,pos),若pos不存在,则默认从最后一位开始查找

find_first_not_of()

在源串中从位置pos开始往后查找,只要在源串遇到一个字符,该字符与目标串中的任意一个字符都不相同,就停止查找,返回该字符在源串中的位置;若遍历完整个源串,都找不到满 足条件的字符,则返回npos。

find_last_not_of()

find_last_not_of()与find_first_not_of()相似,只不过查找顺序是从指定位置向前

猜你喜欢

转载自blog.csdn.net/weixin_43175029/article/details/84851302