string截取替换查找子串函数,find_first_of 用法

Posted zy-dream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了string截取替换查找子串函数,find_first_of 用法相关的知识,希望对你有一定的参考价值。

1. 截取子串

s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回

s.substr(pos)        截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回

2. 替换子串

s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串

3. 查找子串

s.find(s1)         查找s中第一次出现s1的位置,并返回(包括0)

s.rfind(s1)        查找s中最后次出现s1的位置,并返回(包括0)

s.find_first_of(s1)       查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)

s.find_last_of(s1)       查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)

s.fin_first_not_of(s1)         查找s中第一个不属于s1中的字符的位置,并返回(包括0)

s.fin_last_not_of(s1)         查找s中最后一个不属于s1中的字符的位置,并返回(包括0)

一:find

函数原型:

size_t find ( const string& str, size_t pos = 0 ) const;
size_t find ( const char* s, size_t pos, size_t n ) const;
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( char c, size_t pos = 0 ) const;

参数说明:pos查找起始位置    n待查找字符串的前n个字符

使用样例:

string  str1("the usage of find can you use it");

string  str2("the");

上面定义出了两个字符串;

str1.find(str2);                    // 从串str1中查找时str2,返回str2中首个字符在str1中的地址

str1.find(str2,5);                // 从str1的第5个字符开始查找str2

str1.find("usage");            //  如果usage在str1中查找到,返回u在str1中的位置

str1.find("o");                     // 查找字符o并返回地址

str1.find("of big",2,2);      //从str1中的第二个字符开始查找of big的前两个字符

二:find_first_of

函数原型:

size_t find_first_of ( const string& str, size_t pos = 0 ) const;
size_t find_first_of ( const char* s, size_t pos, size_t n ) const;
size_t find_first_of ( const char* s, size_t pos = 0 ) const;
size_t find_first_of ( char c, size_t pos = 0 ) const;

参数和find基本相同,不再赘述!

特别注意:

find_first_of 函数最容易出错的地方是和find函数搞混。它最大的区别就是如果在一个字符串str1中查找另一个字符串str2,如果str1中含有str2中的任何字符,则就会查找成功,而find则不同;

比如:

string str1("I am change");

string  str2("about");

int k=str1.find_first_of(str2);    //k返回的值是about这5个字符中任何一个首次在str1中出现的位置;
代码示例:
#include<iostream>
#include<string>
using namespace std;

int main(){
    
    string str1("hi,every one! I am heat_nan from dlut one");
    string str2("heat_nan");
    int k = str1.find(str2);
    cout << "the position of ‘heat_nan‘ is " << k << endl;
    int k1 = str1.find("one");
    cout << "the position of the first ‘one‘ is " << k1 << endl;
    int k2 = str1.find("one of", k1 + 1, 3);
    cout << "the position of the second ‘one‘ is " << k2 << endl;
    int k3 = str1.find_first_of("aeiou");
    while (k3 != string::npos){
        str1[3] = ‘*‘;
        k3 = str1.find_first_of("aeiou", k3 + 1);
    }
    cout << str1 << endl;
    
    system("pause");
    return 0;
}

输出结果:

the position of ‘heat_nan‘ is 19
the position of the first ‘one‘ is 9
the position of the second ‘one‘ is 38
hi,*very one! I am heat_nan from dlut one

参考
https://www.cnblogs.com/catgatp/p/6407788.html
https://blog.csdn.net/iot_change/article/details/8496977



以上是关于string截取替换查找子串函数,find_first_of 用法的主要内容,如果未能解决你的问题,请参考以下文章

Python 字符串操作(string替换删除截取复制连接比较查找包含大小写转换分割等)

TSQL 字符串函数:截断和查找

Oracle函数--合并,替换,拼接,截取,查找

Python 字符串操作(string替换删除截取复制连接比较查找包含大小写转换分割等)

Python 字符串操作(string替换删除截取复制连接比较查找包含大小写转换分割等)

JAVA String 如何去掉指定字符