string(下)

embedded/2024/9/23 3:17:48/

目录

一、capacity

 1)size()、length()和capacity()

2) resize()和reserve()

二、element access

1)at ()

2)back()

3)front()

三、modifiers

 1)operator+=

2)append ()

3)assign()

4)insert() 

5)erase() 


一、capacity

 1)size()、length()和capacity()

size()和length()都是返回的字符串的长度,没有区别,所算的长度不包括\0。

而capacity()计算的是分配给该字符串的内存空间,这个空间是没有包含\0的,也就是说计算的比实际空间少一个,还有一个是预留给\0的。

2) resize()和reserve()

resiez()和reserve()的作用都是扩容,但是二者又有所区别。

resize()既会影响size又会影响capacity,而reserve只会影响capacity。

注意:当传入的参数比当前capacity小时,vs中reserve()是不会缩容的。

可以看到,最后size和capacity都发生了变化。 

对于参数中给了字符的,如果新的大小大于当前大小,新加入的元素会以默认构造的方式进行初始化。没有给的,就是用\0初始化。

接下来看看reserve():

可以看到,size并没有改变 。

需要注意的是,在vs上扩容,可能最后结果并不是我们预期的那样,例如上面这个例子,我们期望是扩容到20,但是实际上扩容到了32(算上\0),不同的编译器扩容后的结果可能不一样,有的编译器可能就是按照你给的数据来扩容的。

二、element access

在上一篇博客中已经提到了用下标+[ ]来获取对于元素,这里就不讲了。

1)at ()

at()函数 接受一个位置索引作为参数,然后返回该位置的字符。

2)back()

用于访问字符串中的最后一个字符,同时也可以修改这个字符。

3)front()

类似的,front()就是获取第一个字符。

三、modifiers

 1)operator+=

这个就比较形象了,直接在后边追加,可以是一个字符,也可以是字符串。

2)append ()

append()用于将一个字符串追加到另一个字符串的末尾,有6种,可根据需要选择追加方式。

3)assign()

assign()用于替换字符串的内容。

4)insert() 

 这里就演示其中一个:

在下标为3前插入字符串“xxx”。

5)erase() 

 这里只演示一下第一个,从下标为3的位置开始删除,删除2个。


http://www.ppmy.cn/embedded/30317.html

相关文章

【C语言实现贪吃蛇】(内含源码)

前言:首先在实现贪吃蛇小游戏之前,我们要先了解Win32 API的有关知识 1.Win32 API Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调佣这个中心的各种服务(每一…

Python 全栈体系【四阶】(三十九)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.2 YOLO 系列 3.2.4 YOLOv4(2020 年 4 月) YOLOv4 将最近几年 CV 界大量的研究成果集中在一套模型中,从检测速度、精度、定位准确率上有了明显改善(相对于 YOLOv3&#xff0c…

《有限元分析及应用》《有限元分析基础教程》-曾攀-清华大学|pdf电子书+有限元分析及应用视频教程(全85讲) 曾攀、雷丽萍 ​​​+课件PPT

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

Ant Design助力:实现用户列表的优雅展示与管理

文章目录 概要前端讲解登录组件注册组件用户列表组件 后端讲解连接数据库db.js路由routes.jsexpress应用app.js 启动项目小结 概要 在上一篇博客🚪中,我们已经成功实现了登录注册系统的基本功能。现在,我们将进一步完善系统,实现…

Golang | Leetcode Golang题解之第63题不同路径II

题目&#xff1a; 题解&#xff1a; func uniquePathsWithObstacles(obstacleGrid [][]int) int {n, m : len(obstacleGrid), len(obstacleGrid[0])f : make([]int, m)if obstacleGrid[0][0] 0 {f[0] 1}for i : 0; i < n; i {for j : 0; j < m; j {if obstacleGrid[i]…

删除链表中等于给定值 val 的所有结点(三种方法深入解析)

又见面啦&#xff0c;接下来的链表相关Oj题目我会根据我自己的理解来给大家讲解&#xff0c;包括解析和代码&#xff0c;希望你可以对链表有更加深入的理解&#xff01;&#xff01; 题目&#xff1a; 先上链接&#xff1a; OJ题目 给你一个链表的头节点 head 和一个整数 va…

高可用系列四:loadbalancer 负载均衡

负载均衡可以单独使用&#xff0c;也常常与注册中心结合起来使用&#xff0c;其需要解决的问题是流量分发&#xff0c;这是就需要定义分发策略&#xff0c;当然也包括了故障切换的能力。 故障切换 故障切换是负载均衡的基本能力&#xff0c;和注册中心结合时比较简单&#xf…

线性代数 --- 计算斐波那契数列第n项的快速算法(矩阵的n次幂)

计算斐波那契数列第n项的快速算法(矩阵的n次幂) The n-th term of Fibonacci Numbers&#xff1a; 斐波那契数列的是一个古老而又经典的数学数列&#xff0c;距今已经有800多年了。关于斐波那契数列的计算方法不难&#xff0c;只是当我们希望快速求出其数列中的第100&#xff0…