【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.rhkb.cn/news/273716.html

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

相关文章

LoadRunner学习:RuntimeSetting、参数化、关联、(unfinished

LoadRunner RuntimeSetting 运行时设置 在Vuser中设置Run-time Settings RunLogic:运行逻辑,决定了脚本真正执行逻辑, Init和End部分代码只能执行一次。决定脚本真正执行逻辑的意思是,在Run中的代码和Number of Iteration决定了…

[HackMyVM]Quick 2

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

如何把黑白照片变成彩色?分享3款神奇的技术!

在数字化时代,我们手中的老照片不仅仅是回忆的载体,更是时光的见证。那些年代久远的黑白照片,虽然承载着珍贵的记忆,但却少了些许生动的色彩。那么,你是否想过让这些黑白旧影焕发新生,重现昔日的斑斓色彩呢…

ChatGPT无法发送消息问题解决

如果您的 Chatgpt 网页版这几日一直无法发送消息,或者发送了消息,也没有相应的回复,如下图所示: 现在 OpenAI 已经修复了这个 BUG。 用户可以尝试清理 OpenAI 网站的缓存,之后再重新登录,即可正常发送消息。…

全网最全压力测试攻略大全,建议收藏备用!

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…

Linux 学习(持续更新。。。)

wc命令 命令直接执行&#xff0c;输出包含四项&#xff0c;分别代表&#xff1a;行数、字数、字节数、文件。 例子:编译下列代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #inclu…

Facebook、亚马逊养号选择什么代理IP?

之前我们讨论过很多关于代理器的问题。它们的工作原理是什么?在不同的软件中要使用那些代理服务器?这些代理服务器之间的区别是什么?什么是反检测浏览器等等。 除了这些问题&#xff0c;相信很多人也会关心在使用不同平台的时代理器的选择问题。比如&#xff0c;为什么最好…

MATLAB 四点确定唯一球面参数(44)

MATLAB 四点确定唯一球面参数(44) 一、算法简介二、算法实现1.代码2.结果一、算法简介 根据给定的四个点,快速拟合获取球的中心和半径,具体代码如下: 二、算法实现 1.代码 代码如下(示例): point1 = [0.0, 0.0, 0.0]

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…

git 如何将多个提交点合并为一个提交点 commit

文章目录 核心命令详细使用模式总结示例 核心命令 git merge branch2 是将分支branch2的提交点合并到本地当前分支。 而在执行这条命令的时候&#xff0c;加一个选项--squash就表示在合并的时候将多个提交点合并为一个提交点。 git merge --squash branch2 先看squash单词的意…

基于单片机的视觉导航小车设计

目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…

css相邻元素边框重合问题,解决方案

1、如下图所示&#xff0c;在给元素设置边框后&#xff0c;相邻元素会出现重合的问题 2、解决方案 给每个元素设置margin-top以及margin-left为负的边框 <div style"width: 300px;display: flex;flex-wrap: wrap;margin-top: 50px;"><div style"border…

MySQL-QA-异常问题及解决方案(持续更新)

MySQL-Q&A(持续更新) 1.1 PID文件找不到 问题描述 错误详情&#xff1a; ERROR&#xff01;The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid) 解决方案 首先排查配置文件&#xff0c;一般路径为&#xff1a;/etc/my.cnf 检查…

蓝桥杯2023真题(4)

1.景区导游&#xff08;树上前缀和、最近公共祖先&#xff09; 思路 路线&#xff1a;2 -> 6 -> 5 -> 1 1.一个点都不去去掉的花费记作sum 2.去掉第一个点&#xff0c;sum - cost[2 -> 6] 3.去掉第二个点&#xff0c;sum - cost[2 -> 6] - cost[6 -> 5] co…

01、python_爬虫的相关概念

一、什么是爬虫&#xff1f; 爬虫是网络爬虫的简称&#xff0c;指的是一种自动化程序&#xff0c;用于在互联网上抓取信息。爬虫的核心工作包括爬取网页、解析数据和存储数据。 通俗来说就是&#xff1a;通过一个程序&#xff0c;根据url(http://taobao.com)进行爬取网页&…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

Tomcat容器经常重启问题排查

报错代码: INFO [Catalina-utility-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started1.查看内存占用情况:top 可以发现java线程正常情况下占用高达24%的内存资源 2.继续排查:top -Hp 29580 可以发现主要有子线程Catalina-ut…

OWASP Top 10 网络安全10大漏洞——A02:A02:2021-加密机制失效

10大Web应用程序安全风险 2021年top10中有三个新类别、四个类别的命名和范围变化&#xff0c;以及一些合并。 A02&#xff1a;A02:2021-加密机制失效 上升一个位置&#xff0c;当前top2&#xff0c;以前称为敏感数据泄露&#xff0c;是一种状况而不是根本原因。更新后的类别…

leetcode 热题 100_旋转图像

题解一&#xff1a; 翻转数组&#xff1a;先将数组沿右上-左下对角线翻转&#xff0c;再将数组上下翻转。 class Solution {public void rotate(int[][] matrix) {int n matrix.length;for (int i 0; i < n; i) {//沿右上-左下对角线翻转for (int j 0; j < n - i - 1…

伊理威科技:新手开抖店的教程

在数字浪潮中&#xff0c;抖音小店如星火燎原&#xff0c;吸引无数创业者。你是否也心潮澎湃&#xff0c;想要一试身手?别急&#xff0c;让我们一步步揭开开店的神秘面纱。 注册流程。想象一下&#xff0c;你只需在抖音平台上点击“我要开店”&#xff0c;按提示填写相关信息&…