当前位置: 首页 > article >正文

C++ string类

STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

string类

为什么要学习string类

string其实就是一个字符串的类,但是由于C语言中的字符串中提供了很多函数,这些函数又是和字符串是分不开的,又不太符合面向对象的要求,而且底层需要自己来管理,十分麻烦,所以C++提供的自己的string类

string类的函数

C++的库函数里面也是为string类提供了很多函数,大概有100多个,但是这100多个也不是每一个函数都会经常使用,我们只是挑几个重要的来讲

构造函数和输入输出流重载函数

 上面展现了好几个构造函数,但是只是需要掌握几个函数就行了

下面的几个函数只需要了解就行了

(1)

从一个string类的第pos个位置开始,拷贝npos个元素到另一个string类里面去,如果npos不写或者大于当前要被拷贝的string嘞里面从pos开始,到string类结尾的个数,就拷贝全部

构造n个相同的字符

遍历

遍历方法1

运用这个可以遍历字符串,还可以修改,就像C语言中的数组一样

这两个函数都是返回string类的长度的,这两者是没有区别的,length只是因为沿用C语言而保存下来的,引用了STL之后, 为了兼容,这才又引用了size

遍历方法2 

 

begin()函数是返回string的头一个元素的迭代器,end是返回最后一个元素的下一个元素的一个迭代器类型,至于什么是迭代器,这个阶段就把他想像成为一个指针就可以了

大家一定注意到了刚才上面的begin和end函数了吧,他们两个函数都分别重载了两个函数,前面都加上了const关键字,下面,是他们的使用场景

 

但是问题来了,为什么上面要写成const_iterator,中间要加一个下划线,不直接写成const iterator不加下划线的嘞

原因如下:不加下划线表示iterator类型的变量不能改变,在这里就是it1不能改变,那你还怎么遍历数组,加了下划线表示指向的内容不可以被改变,也就是*it1不能被改变 

遍历方法3

范围for

 其实范围for的底层也是迭代器,是把s1里面的每一个元素取出来,赋值给e,自动++,自动判断是否达到结束条件,这时候对e进行改变是不会改变s1的,比如下面的程序

如果想要改变s1的话,需要在e的前面加上一个&,也就是取一个别名,比如下面的程序

 这时候s1也被改变了

倒叙遍历

 

rbegin指向的是string的最后一个元素,rend指向的是string的第一个元素 的前一个元素

rebgin++是向前走,也就是向rtend的方向走,下面是他们的使用例子

 关于前面又const的就不用谈了,和前面的一样

STL的算法-sort

第一个参数指向的是第一个元素,第二个参数是最后一个,对与string进行排序的话就是按照字典序来排,也就是我们所说的ASCI码来排

 

这个函数还可以对任意区间进行排序

好了,以上就是今天的全部内容 


http://www.kler.cn/a/304759.html

相关文章:

  • 使用etl工具kettle的日常踩坑梳理之二、从Hadoop中导出数据
  • 【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!
  • linux设置主机名
  • 结构体(c语言)
  • K8资源之endpoint资源EP资源
  • MySql结合element-plus pagination的分页查询
  • k8s以及prometheus
  • 树莓派交叉编译
  • 【Web】URI和URL的介绍
  • STM32CubeIDE关于printf()串口输出重定向的问题
  • 『功能项目』项目优化 - 框架加载资源【41】
  • 在 macOS 上管理 Node版本
  • 计算机存储概念
  • python numpy pytorch tensorlfow list 转tenser float 32的方法,模型计算基本用的都是float32,需要转换
  • 常见本地大模型个人知识库工具部署、微调及对比选型
  • mac上Charles怎么配置,可以抓取浏览器/IDEA的接口
  • 【getshell】phpmyadmin后台getshell(4.8.5)
  • springboot+security为什么@ControllerAdvice自定义的异常处理没有生效
  • 怎么去浮毛比较高效?热门除浮毛宠物空气净化器希喂、范罗士、有哈测评推荐
  • Linux与Ubuntu:内核与发行版的关系
  • MinGW-w64全面讲解:Windows平台的C/C++编译利器
  • Qt控制开发板的LED
  • openCV的python频率域滤波
  • 唯品会大数据面试题及参考答案(3万字长文)
  • C到C++入门基础知识
  • Linux环境基础开发工具---yum