zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    计算机网络-数据结构-MAC帧头-IP头-TCP头-UDP头
    (考研)java网络编程
    多态(重点:方法的多态性和对象的多态性)
    JZOJ1497 景点中心 题解
    JZOJ1227 Coprime 题解
    JZOJ3966 Sabotage 题解
    JZOJ3056 数字 题解
    JZOJ3054 祖孙询问 题解
    【Luogu P2282】【JZOJ 4906】【NOIP2016提高组复赛】组合数问题 题解
    JZOJ4316【NOIP2015模拟11.5】Isfind 题解
  • 原文地址:https://www.cnblogs.com/ZY-Dream/p/9998224.html
Copyright © 2011-2022 走看看