【C++】string类(介绍、常用接口)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:http://t.csdnimg.cn/eCa5z

9efbcbc3d25747719da38c01b3fa9b4f.gif

目录

string类的常用接口说明

string类对象的常见构造

​编辑

 string字符串的遍历(迭代器)

下标加[](operator[])

 迭代器iterator(begin、end)

反向迭代器(rbegin、rend)

范围for

 容量操作

 size、length、max_size、capacity

shrink_to_fit 

reserve 

 resize

at 

修改操作

 push_back

append 

 operator+=

assign 

insert 

erase 

replace 

c_str

find

string类非成员函数

relational operators

​编辑

 operator+

getline

to_string、stod


前言

    💬 hello! 各位铁子们大家好哇。

             今日更新了string的内容
    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

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

string类的常用接口说明

string类对象的常见构造

0ee2b9753c7643fa88c69cac07279d99.png

b9bde6d0348a4da296b2d0e95510e389.png

 第一行是构造一个空字符串。第二行是构造输入的字符串。第三行是拷贝构造。第四行是从下标为5开始的三个字符构造,当第三个参数大于末尾下标时,或者当第三个参数不写时,就会把剩下全部的字符用来构造。

9cf5a6a47a424f948885a5f606661033.png

上图中,s3是用n个字符c构造。s5是从字符串中,用前3个构造。 s0=s3是赋值。

 string字符串的遍历(迭代器)

下标加[](operator[])

045c8e58f53d419eb229d086ed218142.png

0c1c9c01e64e430b8c6248bd320f451b.png

在c++中,字符串后面是有'\0'的。但是size是不会计算'\0'的。如上图。 

648fafe24064412fa18808b1acf84abb.png

6cd289d72e964465ad24bab47b37eb97.png

下标加[]的方式,不仅可以读取,还可以修改。 

我们还发现,他有两种重载形式(this指针不同):

410eaee1337b4bc28396f630385ac203.png

如果是const修饰的,就不能修改,只能读。 

 迭代器iterator(begin、end)

9c61b2e8ac644b59acf0148c33d06324.png

6c766333a2ee496298f61d29fb20fcaf.png

迭代器iterator是一个类型,是定义在string类里面的,需要指定类域才能用。end()是最后一个有效字符的下一个位置,即‘\0’。begin()是起始位置。他模拟指针的行为,但他不是指针,因此他也可读可写。

反向迭代器(rbegin、rend)

b34980b304cb4c22a3f820d4adbeb188.png

b0b5e6cd77184f11b077cbfdf4bb5362.png


c0009df094a04cbe9b395cefd9df6079.png

c60047f04e044bf59a0d30db471ccec5.png

当我们的对象是const对象,我们要用对应的const的iterator。end也是如此。用const修饰后,就不能修改了,只能读,不能写。如果是反向的,就是    string::const_reverse_iterator 

范围for

468103ea678445129befa0e2be666966.png

范围for遍历,底层其实也是迭代器。写起来会比较简洁。 

 容量操作

 size、length、max_size、capacity

3f7d019472ce48869e5449c18d12e895.png

size和length是一样的,一般使用size。 max_size就是最大的长度,实际上没什么意义。capacity就是容量。

2b5bf89019c04229b8a8d117914c2f8c.png

capacity实际不包含'\0'占用的空间的,虽然写着15,但实际是16。31实际是32。刚开始是两倍的扩,后面就是1.5倍的扩。但是扩容机制是不确定的。 

5e708e7454ba42229d5c2bad7d90e58b.png

clear就是清除数据,但是清不清空间是不确定的。 

shrink_to_fit 

如果想清理空间,就要缩容:

634422ffdd384823a880f4d0aa4de3b2.png

4f1f3e18b02b407892a42691c2b3252a.png

 缩容会把空间减少到size的大小。清空时,最小的大小是16。 


reserve 

我们插入数据,空间不够,会自动扩容。如果想要手动扩容,就要用reserve。 

ed104af7144540b88013e7e16f0c720e.png

2315d1c9fdc044178d8cbb4f71e3bf0d.png

 如果我们知道大概需要多少空间,可以请求空间。这样就不需要频繁的扩容,频繁扩容会降低效率。不过我们申请100个,它不一定就给100个,可能会给更大的空间。如果我们给的比当前的capacity小,他就不会生效。只有比当前capacity大,才会扩容。


 resize

54c10b38304041fcb07272c415b2c487.png

871aa829a2fd4bde83af01c47c337419.png

294eb7bceb8b4d3cbd683b2910a962a9.png

821f3ffa194546bb89eebbfb0d6199f3.png

 resize是改变size的大小。如果改变后的大小比当前小,就删除。如果大于当前size,小于capacity,就插入。如果大于capacity就扩容+插入。resize有两个版本,如果第二个参数不写,就默认插入'\0',如果写了,就插入该字符。


at 

af8702f8e3fe43a9bf9e52261bee26b3.png

c02fe499479f4a97aeecc5a48bc4f81a.png

at和operator[]的使用基本一样。区别在于越界报错时,[]会报断言错误,at会报没异常的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python网站的搭建和html基础

1.Python网站代码及讲解 一般我们搭建小型的网站就用flask库就行了。 (1)安装flask库 安装完python后,按住windows徽标键和r,弹出“运行”,在里面输入cmd。 回车打开,输入“pip install flask”。 (2&am…

地平线旭日x3派部署yolov5--全流程

地平线旭日x3派部署yolov5--全流程 前言一、深度学习环境安装二、安装docker三、部署3.1、安装工具链镜像3.2、配置天工开物OpenExplorer工具包3.3、创建深度学习虚拟空间,安装依赖:3.4、下载yolov5项目源码并运行3.5、pytorch的pt模型文件转onnx3.6、最…

要先学会 “面向对象编程” 就得学会类和对象(Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

申请选择商家转账到零钱流程怎样的

商家转账到零钱是什么? 【商家转账到零钱】可以说是【企业付款到零钱】的升级版,商家转账到零钱可以为商户提供同时向多个用户微信零钱转账的能力,支持分销返佣、佣金报酬、企业报销、企业补贴、服务款项、采购货款等自动向用户转账的场景。…

如何关闭微软的Edge浏览器右击提示的:“使用copilot重写“的提示?

最近在使用微软的edge浏览器写文档的时候,总是不小心右击鼠标,提示 有时候挺烦人的,那怎么关闭呢? 打开edge浏览器的设置 在设置中搜索AI,并关闭AI书写的选项就好了 这样就可以获得一个干净的界面了,不…

什么是APP封装?APP封装有什么途径?APP封装如何实现?

APP封装是形成APP成本最低的一种方式。你只需要拥有一个手机端的网址就可以通过一些技术处理封装成一个跨iOS和Android的APP,这个过程往往只需要几分钟。既节省时间又能节省开发的成本资金,所以接下来就介绍一下大家都比较关心的怎么给手机网站封装打包成…

基于pytest的证券清算系统功能测试工具开发

需求 1.造测试数据:根据测试需要,自动化构造各业务场景的中登清算数据与清算所需起来数据 2.测试清算系统功能: 自动化测试方案 工具设计 工具框架图 工具流程图 实现技术 python, pytest, allure, 多进程,mysql, 前端 效果 测…

探索 PostgreSQL 的高级数据类型 - 第 二 部分

范围类型 范围类型提供了一种简洁的方式来表示单个数据库字段中的值范围。它们在从时间数据到数字间隔的各种领域中都有应用。在本篇博客文章中,我们将通过 DML/SQL 语句和 Navicat for PostgreSQL 16 来深入了解它们的使用(以及好处!&#…

STM32存储左右互搏 SPI总线读写SD/MicroSD/TF卡

STM32存储左右互搏 SPI总线读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元,由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡,手机领域用的TF卡实际就是MicroSD卡,尺寸比SD卡小,而电路和协…

数学建模-多目标规划算法(美赛建模)

单目标优化的情况下,只有一个目标,任何两解都可以依据单一目标比较其好坏,可以得出没有争议的最优解。 多目标化与传统的单目标优化相对。多目标优化的概念是在某个情景中在需要达到多个目标时,由于容易存在目标间的内在冲突&…

目标检测数据集:手机顶盖焊缺陷检测数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

Anaconda环境全局环境手动配置

Anaconda环境全局环境手动配置 如图,在本机就有Anaconda的情况下,普通cmd无法直接使用conda命令,每次都要从Anaconda Prompt窗口操作,挺不方便的,遂决定进行全局环境配置,记录一下流程。 找到环境配置页面…

R语言绘制散点密度图ggdentity

使用R语言绘制二维密度图 下图是一张常见的二维核密度散点图,能够清晰直观的反映出数据之间的分布趋势,颜色越红的位置数据越集中分布。今天分享的笔记是在R语言中绘制该图的两种常见方法,提供过程代码。 论文中常见的这种展示两组数据之间分…

上班族必备技能!轻松掌握excel文件如何批量加后缀名方法,提升工作效率!

后缀名是什么 后缀名是帮助人区分文件类型的一种手段,文件后缀名也叫文件扩展名,是用来表示某种文件格式所采用的机制。文件扩展名是加在主文件名后面的,用“.”分隔。不同的软件要求不同的文件格式,后缀名可以帮助用户了解文件是…

Python 可视化和数据缺失处理库之missingno使用详解

概要 在数据分析和数据科学的领域中,数据缺失是一个常见的问题。数据缺失可能会导致分析和建模结果的不准确性,因此了解如何处理和可视化缺失数据至关重要。Python Missingno 是一个强大的工具,可以直观地识别和处理数据中的缺失值。本文将详细介绍 Python Missingno 的功能…

Threejs播放模型自带动画

现在的很多建模软件都可以制作动画效果,甚至可以通过各种动画效果直接做动漫,动漫是模型的一种属性,在threejs中同样可以加载此动画,实现动画效果,如果有的时候在threejs中用代码实现模型动画比较困难或者麻烦&#xf…

嵌入式、开发板 智能音响 OpenHarmony GPT 大模型 智能硬件

一、概述 生活场景的引入: 物联网的快速发展,各种智能设备层出不穷,作为极客,家里早已安上了用 APP 控制的智能灯、智能插座,刚刚安装上的时候,还有新鲜感,久了之后,是不是会有这样的现象: 早上醒来要开灯,需要经过: 迷迷糊糊从床头柜上摸到手机手机用指纹解锁连接无…

Hadoop学习1:概述、单体搭建、伪分布式搭建

文章目录 概述基础知识Hadoop组件构成Hadoop配置文件 环境准备配置Hadoop配置下载配置环境变量 Hadoop运行模式Standalone Operation(本地)官方DemoWordCount单词统计Demo Pseudo-Distributed Operation(伪分布式模式)配置修改启动…

WPF 界面刷新问题 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改

WPF 界面刷新问题 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改 问题描述: 在子线程中操作界面控件的数据源出现以下错误:System.NotSupportedException:“该类型的 CollectionView 不支持从调度程序线程以外的线程对其 SourceCo…

【Python】新手入门学习:什么是相对路径?

【Python】新手入门学习:什么是相对路径? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得…