• string的常用操作


    记录一下平时用到的string操作:

    1.int转为string

    方法一:to_string()

    c++11标准增加了全局函数std::to_string:

    string to_string (int val);

    string to_string (long val);

    string to_string (long long val);

    string to_string (unsigned val);

    string to_string (unsigned long val);

    string to_string (unsigned long long val);

    string to_string (float val);

    string to_string (double val);

    string to_string (long double val);

    例子:

    string pi = "pi is " + to_string(3.14); 
    cout << pi << endl;    //输出pi is 3.140000

    方法二:借助stringstream(慢)

    #include <sstream> //stringstream
    #include <string> //string
    #include <iostream>
    using namespace std;
     
    int main(){
        int n=100;
        stringstream ss ;
        string str;
        
        ss << n;
        str = ss.str();    
        cout << str;    //输出100
     
        return 0;
    }

    2.string转int

    方法一:str.c_str()

    string str = "1234";
    int n = atoi(str.c_str());    
    cout << "n=" << n;    //输出n=1234

    方法二:借助stringstream

    #include <sstream>
    istringstream is("1234"); //构造输入字符串流,流的内容初始化为“1234”的字符串   
    int i;   
    is >> i; //从is流中读入一个int整数存入i中    
    cout << i;    //输出1234

     方法三:使用stoi()

    #include <string>
    string str = "1234";
    int n = stoi(str);    
    cout << "n=" << n;    //输出n=1234

    (参考:https://www.cnblogs.com/smile233/p/8379802.html)

    3.字符串拼接 +,append()

    string str = "12345";
    str += "abc";
    str.append("def");
    cout << str << endl;        //输出12345abcdef
    str.append("Myinput",3);    //只取myinput前3个字符
    cout << str << endl;        //输出12345abcdefMyi
    
    string tmp;
    tmp.append(str, 2, 2);        //从下标为2开始取2个元素
    cout << tmp << endl;        //输出34

    4.修改某个元素的值 [],at()

    string str = "12345";
    str[2] = 'a';
    cout << str << endl;    //输出12a45
    string str = "12345";
    str.at(2) = 'a';
    cout << str << endl;    //输出12a45
    at(n)返回下表为n的元素的引用:
    char& at (size_t pos); const char& at (size_t pos) const;

    5.子串截取 substr()

    string str = "12345";
    string tmp = str.substr(1, 10);    //从下标1开始截取10个字符,实际会截取到字符串末尾
    cout << tmp << endl;    //输出2345

    6.查找和替换 find(),replace()

    string str = "12ab55ab";
    int a = str.find("ab");    //返回第一次找到的子串下标,否则-1
    cout << a << endl;        //输出2
    a = str.find("ab", 3);    //从下标为3开始找
    cout << a << endl;        //输出6    
    
    a = str.rfind("ab");    //从右边开始
    cout << a << endl;        //输出6    
    string str = "12345";
    str.replace(2, 2, "qqqqq");    //从下标为2开始,用qqqqq替换2个元素
    cout << str << endl;    //输出12qqqqq5

    7.插入和删除 insert(),erase()

    string str = "12345";
    str.insert(5, "aa");    //在下标为5的前面插入aa,这里n不能超过字符串长度,否则会越界
    cout << str << endl;    //输出12345aa
    string str = "12345";
    str.erase(2, 10);        //从下标为2的元素开始,删除10个元素,这里实际是到末尾
    cout << str << endl;    //输出12

    8.翻转 reverse()

    string str = "12345";
    reverse(str.begin(), str.end());
    cout<<str;    //输出54321

    9.比较 compare()

    string str = "12345";
    string str2 = "12345";
    cout << str.compare(str2) << endl;    //大于=>1,等于=>0,小鱼=>-1,这里输出0

    (参考:https://www.cnblogs.com/xiximayou/p/12111059.html)

  • 相关阅读:
    I/O性能优化
    磁盘性能指标
    磁盘I/O工作原理
    文件系统工作原理
    Linux命令行工具之free命令
    内存性能优化
    内存工作原理
    内存中的Buffer和Cache的区别
    proc文件系统
    oracle 查询 LOB 字段大小
  • 原文地址:https://www.cnblogs.com/Brickert/p/12792582.html
Copyright © 2020-2023  润新知