面试知识点总结——字符串操作

本节将对C++中字符串的操作进行整理。

  1. 字符串长度

    int len = str.length();
    len = str.size()
  2. 字符串比较

    可以直接进行比较

    也可以:

    str1.compare(str2);
    str1.compare(pos1,len1,str2,pos2,len2);//值为负,0和正
  3. 附加

    str1 += str2;
    str1.append(str2);
    str1.append(str2,pos2,len2);
  4. 字符串提取

    str2 = str1.substr();
    str2 = str1.substr(pos1);
    str2 = str1.substr(pos1,len1);
    string a = s.substr(0,4);//获得字符串s中,从第0位开始的长度为4的字符串
  5. 字符串搜索

    where = str1.find(str2);
    where = str1.find(str2.pos1); //pos1是从str1第pos1位开始搜索
    where = str1.rfind(str2);
  6. 插入字符串

    str1.insert(pos1,str2);
    str1.insert(pos1,str2,pos2,len2);
    str1.insert(pos1,numchar,char); //numchar是插入次数,char是要插入的字符
  7. 替换字符串

    str1.replace(pos1,str2);
    str1.replace(pos1,str2,pos2,len2);
  8. 删除字符串

    str.erase(pos,len);
    str.clear();
  9. 交换字符串

    swap(str1,str2);
  10. 字符串转换成数字

    推荐使用C++的stringstream,因为其操作简单。

    
    #include<sstream>
    
    
    #include<string>
    
    int str2num(string s)
    {
        int num;
        stringstream ss(s);
        ss>>num;
        return num;
    }
  11. 数字转换成字符串

    
    #include<sstream>
    
    
    #include<string>
    
    string num2str(int num)
    {
        stringstream ss;
        ss<<i;
        return ss.str();
    }
  12. 字符串分隔

    使用substr和find函数可以完成这一操作。

    vector<string> splitwithstl(const string &str, const string &pattern)
    {
        vector<string> resVec;
        if("" == str)
        {
            return resVec;
        }
        //方便截取最后一段数据
        string strs = str + pattern;
    
        size_t pos = strs.find(pattern); //返回第一个出现pattern的位置
        size_t size = strs.size();
    
        while(pos != string::npos)
        {
            string x = strs.substr(0,pos); //获得第0到第pos位置的字符串
            resVec.push_back(x);
            strs = strs.substr(pos+1,size);
            pos = strs.find(pattern);
        }
        return resVec;
    }

猜你喜欢

转载自blog.csdn.net/caoyangxiaoyao/article/details/81288517