首页 > 其他分享 >STL string的查找,比较,截取子串

STL string的查找,比较,截取子串

时间:2022-09-20 19:46:21浏览次数:78  
标签:compare const string STL 截取 pos start int

compare函数在>时返回 1,<时返回 -1,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的A比小写的a小。
int compare(const string& s) const;//与字符串s比较
int compare(const char* s) const;//与字符串s比较

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

/*
compare函数在>时返回 1,<时返回 -1,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的A比小写的a小。
int compare(const string& s) const;//与字符串s比较
int compare(const char* s) const;//与字符串s比较
*/

void test01() {

    string str1 = "abcde";
    string str2 = "Abcdef";

    int ret = str1.compare(str2);

    if (ret == 0) {
        cout << "str1 == str2" << endl;
    }
    else if (ret == 1) {
        cout << "str1 > str2" << endl;
    }
    else if (ret == -1) {
        cout << "str1 < str2" << endl;
    }
}

// string substr(int pos = 0, int n = npos) const;//返回由pos开始的n个字符组成的字符串
void test02() {

    string str = "abcdefg";

    string subStr = str.substr(2, 3);

    cout << subStr << endl;

    string email = "[email protected]";

    // 获取@的索引
    int pos = email.find("@");    // pos = 7

    string userName = email.substr(0, pos);
    cout << userName << endl;

}

// 提升
void test03() {

    string str = "192.168.1.1";

    vector<string> v;

    int pos = -1;
    int start = 0;
    while (true) {

        pos = str.find(".", start);
        if (pos == -1) {

            string subStr = str.substr(start, str.size() - start);
            v.push_back(subStr);
            break;
        }

        string subStr = str.substr(start, pos - start);
        v.push_back(subStr);
        start = pos + 1;
    }

    for (vector<string>::iterator it = v.begin(); it != v.end(); it++) {
        cout << *it << endl;
    }

}



// string比较、截取子串
int main() {

    test03();


    return 0;
}

 

标签:compare,const,string,STL,截取,pos,start,int
From: https://www.cnblogs.com/lutixiagit/p/16712225.html

相关文章

  • list 转 string 以逗号隔开
    System.out.println(String.join(",",deptNameList));System.out.println(CollectionUtil.join(deptNameList,","));//ArrayUtil得要这种格式String[]System.out.printl......
  • String、StringBuffer和StringBuilder区别
    String、StringBuffer和StringBuilder区别1、StringBuffer和StringBuilder非常的类似,均表示字符可变序列,方法也一样。2、String表示不可变的字符序列,效率低,复用性高。3......
  • 【STL】Deque - 双向队列
    Deque简介Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。允许快速地访地随机访问,但是和vector这种将所有对象保存在一块连续的内存块不同,Deque......
  • hive substring_index 函数
    substring_index详解substring_index(str,delim,count)str:要处理的字符串delim:分隔符count:计数例子:str=www.wikibt.comsubstring_index(str,'.',1)......
  • Sum of Prefix Scores of Strings
    SumofPrefixScoresofStringsYouaregivenanarray words ofsizeco$n$sistingofnon-emptystrings.Wedefinethescoreofastring word asthenumber......
  • STL常用基础模板
    STL模板:堆头文件:#include<queue>大根堆:priority_queue<int>q;小根堆:priority_queue<int,vector<int>,greater<int>>q;操作:q.top()//取得堆顶元素,并不会弹出q.pop......
  • String与字符、字节数组之间的转换
    importjava.util.Arrays;publicclassStringTest{publicstaticvoidmain(String[]args)throwsException{//String与字符数组之间的转换......
  • JOSN.parse、JSON.stringify深拷贝数据丢失问题(使用JSON深拷贝有哪些弊端)
    一个数组添加属性,深拷贝之后添加的数据丢失当数组添加一个对象,这个对象是不可枚举属性,使用JSON进行深拷贝,会丢失这个属性使用JSON.parse(JSON.stringify())进行深拷贝......
  • ES6 对String做的常用升级优化
    ES61.let有什么用,为什么有了var还要使用let在ES6之前,声明变量只能用var,var声明变量有很多不合理的点,准确的说是因为ES5中没有块级作用域是很不合理的,甚至可以说是一门语......
  • 3、StringBuffer类
    StringBuffer类java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删很多方法与String相同,但StringBuffer是可变长度的StringBuffer是一个容器St......