IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> String 容器 -> 正文阅读

[系统运维]String 容器

String容器

  1. string 和 char*的区别

    1. char * 是一个指针

    2. string 是一个类,其内部封装好了char*,是一个char*型的容器

  2. 特点

    1. string 类内部封装了很多方法

      例如:查找find、拷贝copy、删除delete、替换replace、插入insert

    2. string 管理char*所分配的内存,不用担心复制越界和取值越界等问题

  3. string 容器的构造方法

    1. 默认构造

      string s1;
    2. 用字符串s初始化

      const char * s = "hello world!";
      string s2(s);
      cout<<"s2 = "<<s2<<endl;
    3. 通过复制一个string对象来初始化

      string s3(s2);
      cout<<"s3 = "<<s3<<endl;
    4. 用 n 个指定字符来初始化

      string s4(10,'a');
      cout<<"s4 = "<<s4<<endl;
  4. string 容器的赋值方法

    1. = 方法

      string str1;
      str1 = "hello world!";
      cout<<"str1 = "<<str1<<endl;
      ?
      string str2;
      str2 = str1;
      cout<<"str2 = "<<str2<<endl;
      ?
      string str3;
      str3 = 'a';
      cout<<"str3 = "<<str3<<endl;
    2. assign()函数方法

      string str4;
      str4.assign("hello c++");
      cout<<"str4 = "<<str4<<endl;
      ?
      //取字符串 str 的前 n 个字符
      string str5;
      str5.assign("hello c++",7);
      cout<<"str5 = "<<str5<<endl;
      ?
      string str6;
      str6.assign(str5);
      cout<<"str6 = "<<str6<<endl;
      ?
      string str7;
      str7.assign(5,'x');
      cout<<"str7 = "<<str7<<endl;

  5. string 容器的字符串拼接

    void test03()
    {
     ? ?//string 容器的字符串拼接
     ? ?// += 方法
     ? ?string str1 = "hello";
     ? ?str1 += " world";//可以直接加一个字符串
     ? ?cout<<"str1 = "<<str1<<endl;
    ?
     ? ?str1 += '!';//可以直接加一个字符
     ? ?cout<<"str1 = "<<str1<<endl;
    ?
     ? ?string str2 = "233";
     ? ?str1 += str2;
     ? ?cout<<"str1 = "<<str1<<endl;
    //*************************************************************
     ? ?//append()函数方法
     ? ?string str3 = "hello";
     ? ?str3.append(" world");
     ? ?cout<<"str3 = "<<str3<<endl;
    ?
     ? ?str3.append("123456",3);//只拼接前3个字符串
     ? ?cout<<"str3 = "<<str3<<endl;
    ?
     ? ?string str4 = "str4";
     ? ?str4.append(str2);
     ? ?cout<<"str4 = "<<str4<<endl;
     ? ?str4.append(str3,0,5);//截取str3的字符,范围是从下标为0(位序为1)的字符开始截取5个字符
     ? ?cout<<"str4 = "<<str4<<endl;
     ? ?str4.append("hello world",0,5);//也可以直接将字符本身放进函数中
     ? ?cout<<"str4 = "<<str4<<endl;
    }
  6. string 容器的字符串查找

    1. find()函数:

      1. 只有一个参数,那就是待查找的目标字符串

      2. 返回值是 目标字符串 第一次出现的 下标位置

    2. rfind()函数

      1. 参数与find()函数相同

      2. 与find()函数的区别:

        1. find()函数是在原字符串中从左到右依次查找

        2. rfind()函数实在原字符串在从右到左依次查找

    3. 代码示例:

      void test04()
      {
       ? ?//string 容器的字符串的查找
       ? ?string str1 = "abcdefgdede";
       ? ?int pos1 = str1.find("de");
       ? ?if(pos1 == -1)
       ?  {
       ? ? ? ?//若未找到目标字符串,则返回 -1 
       ? ? ? ?cout<<"未找到字符串"<<endl;
       ?  }
       ? ?else
       ?  {
       ? ? ? ?//pos返回的是从左往右找的过程中第一次遇到 目标字符串的 第一个字符的下标位置(不是位序)
       ? ? ? ?cout<<"找到字符串,pos1 = "<<pos1<<endl;
       ?  }
       ? ?int pos2 = str1.rfind("de");
       ? ?if(pos2 == -1)
       ?  {
       ? ? ? ?cout<<"未找到字符串"<<endl;
       ?  }
       ? ?else
       ?  {
       ? ? ? ?//rfind()函数于find()函数几乎相同,只是rfind()函数是从右往左搜索,而find()函数是从左往右搜索
       ? ? ? ?cout<<"找到字符串,pos2 = "<<pos2<<endl;
       ?  }
      }
  7. string 容器的字符串替换

    1. replace()函数

      1. 共有三个参数

        1. 第一个参数:开始位置的下标

        2. 第二个参数:替换掉原字符串的长度

        3. 第三个参数:用来替换的字符串

    2. 代码示例:

      void test05()
      {
       ? ?//string 容器的字符串的替换
       ? ?string str1 = "abcdefgdedee";
       ? ?//replace()函数
       ? ?//第一个参数是从该 下标 开始
       ? ?//第二个参数是替换原字符串的多少个字符
       ? ?//第三个参数是 拿什么字符串替换
       ? ?str1.replace(1,3,"111111111");
       ? ?cout<<"str1 = "<<str1<<endl;
      }
  8. string 容器的字符串比较

    1. compare()函数

      1. 只有一个参数,那就是待比较的字符串

      2. 其结果有三种情况

        1. = 返回 0

        2. > 返回 1 (即原字符串大于待比较的字符串)

        3. < 返回 -1

    2. 代码示例:

      void test06()
      {
       ? ?//string 容器的字符串比较
       ? ?//比较方式 按字符的 ASCII码值比较
       ? ?// = 返回 0
       ? ?// > 返回 1
       ? ?// < 返回 -1
       ? ?string str1 = "Hello";
       ? ?string str2 = "hello";
       ? ?
       ? ?int ret = str1.compare(str2);
       ? ?if(ret == 0)
       ?  {
       ? ? ? ?//通常使用字符串比较只用比较其是否相等即可,至于谁大谁小意义不大
       ? ? ? ?cout<<"str1 == str2"<<endl;
       ?  }
       ? ?else
       ?  {
       ? ? ? ?cout<<"str1 != str2"<<endl;
       ?  }
      }
  9. string 容器的字符串存取

    1. 用 [ ] 方法

      1. 直接获取指定位置的字符

    2. 用 at() 函数

      1. 只有一个参数,那就是待获取的位置

    3. 代码示例

      void test07()
      {
       ? ?//string 容器的字符(串)存取
       ? ?string str1 = "algorithm";
       ? ?
       ? ?//用 [] 方法
       ? ?for(int i=0;i<str1.size();i++)
       ?  {
       ? ? ? ?cout<<str1[i]<< " ";
       ?  }
       ? ?cout<<endl;
      ?
       ? ?//用 at() 函数方法
       ? ?for(int i=0;i<str1.size();i++)
       ?  {
       ? ? ? ?cout<<str1.at(i)<<" ";
       ?  }
       ? ?cout<<endl;
      ?
       ? ?//xlgorithm
       ? ?str1.at(0) = 'x';
       ? ?cout<<str1<<endl;
      ?
       ? ?//xxgorithm
       ? ?str1[1] = 'x';
       ? ?cout<<str1<<endl;
      }

  10. string 容器的字符串的插入和删除

    1. 插入

      1. insert()函数

        1. 有两个参数

          1. 第一个参数:原字符串待插入的下标位置

          2. 第二个参数:插入的字符串

    2. 删除

      1. erase()函数

        1. 两个参数

          1. 第一个参数:原字符串待删除的下标位置

          2. 第二个参数:删除的字符个数

    3. 代码示例:

      void test08()
      {
       ? ?//string 容器的元素的插入和删除
       ? ?string str1 = "algorithm";
       ? ?str1.insert(1,"1111");
       ? ?//在下标 1 后插入指定字符串
       ? ?cout<<"插入后,str1 = "<<str1<<endl;
      ?
       ? ?str1.erase(1,4);
       ? ?//在下标 1 后删除 4 个字符
       ? ?cout<<"删除后,str1 = "<<str1<<endl;
      ?
       ? ?//*******************************
       ? ?//插入和删除的起始下标都是从 0 开始
       ? ?//*******************************
      }
  11. string 容器的字符串取子串

    1. substr()函数

      1. 两个参数

        1. 第一个参数:原字符串中 取子串的起始位置的下标

        2. 第二个参数:截取子串的长度

    2. 代码示例:

      void test09()
      {
       ? ?//string 容器截取字串substring
       ? ?string str1 = "algorithm";
       ? ?//第一个参数是起始位置的下标
       ? ?//第二个参数是截取 子串的长度
       ? ?string substr1 = str1.substr(0,6);
       ? ?cout<<"substr1 = "<<substr1<<endl;
       ? ?//截取后对原字符串无影响
       ? ?cout<<"str1 = "<<str1<<endl;
      ?
       ? ?//实际应用示例
       ? ?string email = "string@sina.com";
       ? ?int pos = email.find("@");
       ? ?string userName = email.substr(0,pos);
       ? ?cout<<"userName:"<<userName<<endl;
      }

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:27:52  更:2022-01-08 14:30:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:40:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码