zoukankan      html  css  js  c++  java
  • C++标准模板库(STL)之 string

    在C语言中,一般使用字符数组char str[]来存放字符串,但是使用字符数组有时会显得麻烦,C++在STL中加入了string类型,对字符串常用的需求功能进行了封装,使得操作起来更方便,且不易出错。

    如果需要使用string ,需要添加string头文件,即#include<string>  (注:string.h和string是不一样得头文件)

    一、string定义

      string str

      赋值:

      string  str=“abcd”

    二、string中内容的访问

    (1)通过下标访问

    #include<cstdio>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main(){
        string str="abcd";
        for(int i=0;i<str.length();i++){
            printf("%c",str[i]);
        }
        printf("
    ");
        return 0;
    }

    (2)通过迭代器访问

      当使用insert()和erase()时,需要用迭代器为参数

      定义:

    string::iterator it;

      访问:

    #include<cstdio>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main(){
        string str="abcde";
        string::iterator it;
        for(string::iterator it=str.begin();it!=str.end();it++){
            printf("%c",*it);
        }
        printf("
    ");
        return 0;
    }

      输出:
      abcde

    三、string常用函数

    (1)operator+=

      这是string的加法,可以将两个string直接拼接起来

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    
    #include<string>
    using namespace std;
    int main(){
        string str1="abcde";
        string str2="xuy";
        string str3;
        str3=str1+str2;
        cout<<str3<<endl;
        printf("
    ");
        return 0;
    }

      输出:
      abcdexuy

    (2)compare operator

      两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    
    #include<string>
    using namespace std;
    int main(){
        string str1="abcde";
        string str2="xuy";
        if(str1<str2){
            printf("str1<str2
    ");
        }
        else if(str1>str2){
            printf("str1>str2
    ");
        }
        else{
            printf("str1=str2
    ");
        }
    //    printf("
    ");
        return 0;
    }

      输出:
      str1<str2

    (3)length() / size()

      返回string的长度

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    
    #include<string>
    using namespace std;
    int main(){
        string str1="abcde";
    //    string str2="xuy";
        printf("%d",str1.length());
        printf("
    ");
        return 0;
    }

      输出:
      5

    (4)insert()

      1.  insert(pos,string) 在pos位置插入string字符串

      2.  insert(it,t2,t3)  it为原字符串的欲插入位置,it2和it3为待插入字符串的首位迭代器,用来表示串[it2,it3)将被插入在it的位置上

    (5)erase()

      1.删除单个元素

        str.erase(it)用于删除单个元素,it为需要删除的元素的迭代器

      2.删除一个区间内的所有元素

        str.erase(first,last)  其中first和last分别为需要删除区间的起始迭代器和末尾迭代器的下一个地址,也即删除[first,last)

      (6)clear()

      clear()用以清空string中的数据

    (7)substr()

      substr(pos,len)返回从pos号位开始,长度为len的子串

    (8)string::npos

      是一个常数,值为-1

    (9)find()

      str.find(str2),当str2是str子串时,返回其在str中第一次出现的位置,如果str2不是str的子串,那么返回string:npos

      str.find(str2,pos) , 从str的pos号位开始匹配str2,返回值与上相同

    (10)replace()

      str.replace(pos,len,str2) 把str从pos号位开始,长度位len的子串替换为str2

      str.replace(it1,it2,it3) 把str的迭代器[it1,it2)范围的子串替换为str2

  • 相关阅读:
    Mac下安装LNMP(Nginx+PHP5.6)环境
    MySQL中文全文检索
    关于Mysql模糊查询的优化-全文检索和Like的使用
    MySql全文索引
    为mysql数据库建立索引
    【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
    PHP中利用redis实现消息队列处理高并发请求
    Windows下为PHP安装redis扩展
    Linux中postfix邮件服务器的搭建
    ELK日志分析系统(转)
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14324399.html
Copyright © 2011-2022 走看看