美文网首页my-QT专栏
c++字符串常用函数

c++字符串常用函数

作者: c之气三段 | 来源:发表于2021-03-12 14:44 被阅读0次
    //首先char数组和char*字符串可以自动转换成string。但是不可逆,必须调用函数才能做到逆向变换。
    string s="fsgfsdrth";
    s.at(0);//获取字符串一个指定字符和s[0]等效。
    //Operators:可以用 ==, >, <, >=, <=, and !=比较字符串. 可以用 + 或者 += 操作符连接两个字符串
    s=s+"1";
    s.c_str();//返回const char*类型的指针。
    s.length();//字符串长度。
    s.compare("");//s和参数比较,大于为1,等于为0,小于为-1;
    (s=="");//相等为1,否则为0;
    copy(char* s,int num,int start);//返回一个拷贝后的字符数组,c++和Java的参数区别,这你是截取多少个,从哪开始。java一般是从哪到哪。
    s.empty();//c++默认为空串不能用null来比较字符串。空串返回1;
    s.erase(0, 2);//抹除字符,从哪开始,删除几个。这个是删除原来的。
    
        string s = "hello world";
        int i = s.find("world", 0);//find();查找字符串第一次出现的位置,从哪开始找,可做是否包含来用。当然也重载查找字符。找到了返回下标,没找到返回string::npos,rfind();逆向查找。
        if (i!=string::npos) {
            cout << "find it:" <<i<< endl;
        }
        else
        {
            cout << "no find it" << endl;
        }
    
    string s = "helloworld";
        s.insert(5, ",");//字符串插入
        cout << s << endl;
    
        string s = "helloworld";
        
        cout << s.substr(5, 8) << endl;//返回一个子串,从哪开始返回几个。
    
        string s = "He am Tom";
        cout << s.replace(3, 2, "is") << endl;//替换,指的是范围替换。
    

    c++自定义的字符串替换函数

    #include<iostream>
    using namespace std;
    void replace(string &str,string byReplace, string byUse) {//此方法很通用,仿照java替换方法的功能写的函数。
        int index;
        index = str.find(byReplace);
        while (index!= string::npos)
        {
            str.replace(index, byReplace.size(), byUse);
            index=str.find(byReplace,index+ byUse.size());
            if (index == string::npos) {
                return;
            }
        }
    }
    int main(void) {
    
        string s = "He am Tom";
        replace(s,"am","is");
        cout << s << endl;//输出结果He is Tom
    }
    

    自定义split函数

    new出来的数组不能用sizeOf(arry)/sizeOf()arry[0])去计算数组长度。

    #include <string>
    #include <list>
    list<string> spilt(const string& str, const string& bySplitStr)
    {
        list<string> listStr;
        int thisTimeStart = 0;
        int thisTimeEnd;
        int count;
        while(true)
        {
            thisTimeEnd = (int)str.find(bySplitStr,thisTimeStart);
            if(thisTimeEnd==str.npos)
            {
                string end=str.substr(thisTimeStart);
                if(!end.empty())
                {
                    listStr.push_back(end);
                }
                break;
            }
            count = thisTimeEnd-thisTimeStart;
            listStr.push_back(str.substr(thisTimeStart,count));
            thisTimeStart = thisTimeEnd+1;
        }
        if(listStr.size()==0)
        {
            listStr.push_back(str);
        }
        return listStr;
    }
    string listAt(list<string> &listStr, int index)
    {
        list<string>::iterator iter;
        string s;
        int i=0;
        for (iter = listStr.begin(); iter != listStr.end(); iter++)
        {
            if(i==index)
            {
                s=*iter;
                return s;
            }
            i++;
        }
        return s;
    }
    

    迭代器定义方法:
    for (容器类名::iterator 迭代器名 = 容器名.begin(); 迭代器名 != 容器名.end(); ++迭代器名){}


    迭代字符串

    相关文章

      网友评论

        本文标题:c++字符串常用函数

        本文链接:https://www.haomeiwen.com/subject/xvvoqltx.html