[C++]常用字符串操作整理

   /*C++常用字符串操作汇集*/
    string str1("ttt"); //创建并初始化
    string str2 = "txhe"; //另一种方式
    char str3[] = "abcdefg"; //以定义字符数组的方式创建

    cout<<str1<<"----"<<str2<<"----"<<str3<<endl;

    /*直接字符串初始化*/
    string str4(str3);
    cout<<str4<<endl;

    /*指定从str3的下标3位置开始,往后读取4个字节*/
    string str5(str3,3,4);
    cout<<str5<<endl;//defg

    /*将前三个字符作为初值构造*/
    string str6(str3,3);
    cout<<str6<<endl;//abc

    /*分配10个字符,初值都是'k'*/
    string str7(10,'k');
    cout<<str7<<endl;

    str7.assign("abc");
    cout<<str7<<endl;

    /*重新分配指定字符串的前3元素*/
    str7.assign("AABBCC",3);
    cout<<str7<<endl;

    /*Swap交换方法*/
    string str8 = "AAA";
    string str9 = "BBB";
    cout<<str8<<"is str8"<<endl;
    cout<<str9<<"is str9"<<endl;

    str8.swap(str9);
    cout<<str8<<"is str8"<<endl;
    cout<<str9<<"is str9"<<endl;

    string str10 = "AAAA";
    str10 += "BBBB";
    cout<<str10<<endl;
    /*方法可以添加字符串*/
    str10.append("CCCC");
    cout<<str10<<endl;

    /*方法只能添加一个字符*/
    str10.push_back('D');
    cout<<str10<<endl;

    /*头部插入*/
    str10.insert(0,"ZZZ");
    cout<<str10<<endl;
    /*尾部插入*/
    str10.insert(str10.size(),"FFFF");
    cout<<str10<<endl;
    /*中间插入*/
    str10.insert(str10.size()/2,"PPP");
    cout<<str10<<endl;

    string str11 = "ABCDEFGH";
    /*从索引1到索引3 即删掉BCD*/
    str11.erase(1,3);
    cout<<str11<<endl;

    /*即将指定范围内的字符串替换成"",即变相删除FG*/
    str11.replace(2,2,"");
    cout<<str11<<endl;

    string str12 = "ABCDEFGH";
    cout<<str12.length()<<endl;

    string str13 = "ABCDEFGH";
    /*从索引2开始3个字节的字符全替换成"!!!!!"*/
    str13.replace(2,3,"!!!!!");
    cout<<str13<<endl;

    string str14 = "ABCDEFG";
    /*返回字符的可能最大个数,即当前C++字符最多能包含的字符数*/
    cout<<str14.max_size()<<endl;

    string str15;
    /*判断字符串是否为空*/
    if(str15.empty())
    {
        cout<<"str15为空"<<endl;
    }
    else
    {
        cout<<"str15不为空"<<endl;
    }
    str15 += "aaa";
    if(str15.empty())
    {
        cout<<"str15为空"<<endl;
    }
    else
    {
        cout<<"str15不为空"<<endl;
    }

    /*存取单一字符*/
    for(int i=0;i<str15.length();i++)
    {
        cout<<str15[i]<<endl;
    }

    for(int i=0;i<str15.size();i++)
    {
        cout<<str15.at(i)<<endl;
    }

    string str16 = "ABCDEF1234";
    const char* str17 = str16.c_str();//转化为C串,字符指针
    const char* str18 = str16.data();
    for(int i=0;i<str16.size();i++)
    {
        cout<<"C_Str():"<<str17[i]<<endl;
        cout<<"data():"<<str18[i]<<endl;
    }

    string str19 = "ABCDEFG";
    /*返回某个子字符串*/
    /*从索引5开始2个字节*/
    string str20 = str19.substr(5,2);
    cout<<str20<<endl; //FG

    char args = 'C';
    int index = str19.find(args,1); //找到则返回当前索引(不管从什么位置开始查),找不到则返回-1
    cout<<index<<endl;

    int index1 = str19.rfind(args,2);//输出最后一次的出现的位置
    cout<<index1<<endl;

    int index2 = str19.find_first_not_of(args,1);//从1开始查找第一个不属于args的字符的位置
    cout<<index2<<endl;

    int index3 = str19.find_last_not_of(args,1);//从1开始查找最后一个不属于args的字符
    cout<<index3<<endl;

    string str21= "ABCDEFGH123";
    string pattern = "GH";
    string::size_type pos;
    /*从索引0开始,查找符合字符串"GH"的头索引*/
    pos = str21.find(pattern,0);
    cout<<pos<<endl;
    string str22 = str21.substr(pos,pattern.size());
    cout<<str22<<endl;

    /*提供类似STL的迭代器支持*/
    string str23 = "ABCDEFGH123";
    for(string::iterator iter = str23.begin();iter!=str23.end();iter++)
    {
        cout<<*iter<<endl;
    }

    cout<<str23.capacity()<<endl;//重新分配内存之前,str23所能包含的最大字符数,因为有的时候内存并不是连续的,数量增长后需重新分配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值