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

C++ string类

在这里插入图片描述

在这里插入图片描述

C++ string类讲解

1、为什么学习string类?

C语言中的字符串

在C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想(即Object Oriented Programming),而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

在这里插入图片描述

针对类似这样的问题,作为C语言的升级版,C++肯定要拿捏掉相关的缺点,将其优化升级嘛,所以大佬们在研发C++的时候早就已经考虑到并且拿捏住了这些问题——string类就是这么来的。

在这里插入图片描述

因此,我们学习C++中string类的重要性也就不言而喻了。

在这里插入图片描述

2、标准库中的string类

在这里插入图片描述

(1)string类简介:

在这里插入图片描述

① 字符串是表示字符序列的类。

② 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。

③ string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型,关于默认的更多信息,请参阅basic_string)。

④ string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数(关于更多的模板信息还是请参考basic_string)。

⑤ 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列,这个类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

小结一下:

① string是表示字符串的字符串类。

② 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

③ string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator>string。

④ 不能操作多字节或者变长字符的序列。

切记:在使用string类时,必须包含#include头文件以及using namespace std!

在这里插入图片描述

(2)string类的常用接口说明(注意下面我只讲解最常用的接口)

① string类对象的常见构造

在这里插入图片描述

相关文章:

  • 细数那些惊艳一时的 CSS 属性
  • 【C语言】你真的了解结构体吗
  • 可做题2(矩阵快速幂,乘法逆元,exgcd)
  • Mysql用户权限分配详解
  • 一文7个步骤从0到1教你搭建Selenium 自动化测试环境
  • 【网络安全工程师】从零基础到进阶,看这一篇就够了
  • 【C陷阱与缺陷】----语法陷阱
  • 解忧杂货铺(五续集):用了无法离开的网站资源
  • 功能测试转型测试开发年薪27W,又一名功能测试摆脱点点点,进了大厂
  • iOS 紧急通知
  • 艹,终于在8226上把灯点亮了
  • Linux上用Samba建立共享文件夹并通过Linux测试
  • shell简单使用介绍
  • 关于中级开发工程师常问的面试题
  • 蓝桥杯刷题第二十天
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • CSS魔法堂:Absolute Positioning就这个样
  • gcc介绍及安装
  • Median of Two Sorted Arrays
  • MQ框架的比较
  • PHP CLI应用的调试原理
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 当SetTimeout遇到了字符串
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 深度学习在携程攻略社区的应用
  • 使用Gradle第一次构建Java程序
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • python最赚钱的4个方向,你最心动的是哪个?
  • Semaphore
  • 仓管云——企业云erp功能有哪些?
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #职场发展#其他
  • (bean配置类的注解开发)学习Spring的第十三天
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Python) SOAP Web Service (HTTP POST)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读11/100)Fast R-CNN
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ./和../以及/和~之间的区别
  • .net core 6 集成和使用 mongodb
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net Remoting常用部署结构
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net和jar包windows服务部署
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET运行机制
  • @column注解_MyBatis注解开发 -MyBatis(15)