stl String
构造函数
| 表达式 | 效果 |
| string s | 生成一个空的 string s |
| string s(str) | Copy 构造函数,创建一个 string str 的拷贝 |
| string s(rvStr) | Move 构造函数,创建一个 string 并将 rvStr 的内容搬移给 s |
| string s(str,stridx) | 将 string str 内“始于位置 stridx”的部分当作字符串 s 的初值 |
| string s(str,stridx,strlen) | 将 string str 内“始于位置 stridx 且长度最多 strlen”的部分当作字符串 s 的初值 |
| string s(cstr) | 以 C-string cstr 作为字符串 s 的初值 |
| string s(chars,charslen) | 以字符数组 chars 的前 charslen 个字符作为字符串 s 的初值 |
| string s(num,c) | 生成一个字符串,包含 num 个 c 字符 |
| string s(beg,end) | 以 [beg,end) 区间内的字符作为字符串 s 的初值 |
| string s(initlist) | 以 initlist 内的字符作为字符串 s 的初值 |
构造函数
| 表达式 | 效果 |
| s.~string() | 销毁所有字符,释放内存 |
String 和 C-String
'\0'在 string 之中不具有特殊意义,与其它字符的地位完全相同,但在 C-string 中标识结束
null pointer (NULL) 不可取代 nullptr 或 char * 参数,因为 NULL 具有整数类型
String —> 字符数组 / C-String
data()、c_str()
以字符数组的形式返回 string 内容,其结果是一个包含 '\0' 字符的有效 C-string
返回的字符数组由该 string 拥有,即调用者不可以改动它或释放其内存
返回值的有效期限在下次调用 non-const 成员函数时即告终止
copy()
将 string 内容复制到“调用者提供的字符数组”中,其末尾不添加 '\0' 字符
大小和容量
size()、length()
作用:返回 string 的现有字符数
PS:size() 和 length() 两个函数等效
empty() 检验字符数是否为 0,即字符串是否为空,比 size() 和 length() 更快,优先使用
max_size()
作用:返回 string 可存放的最大字符串的长度
capacity()
作用:返回 string 分配的存储容量
元素访问
访问方法:
- 下标操作符 [ ]
- 成员函数 at()
注意:
- Operator [ ] 不检查索引是否有效,at() 会检查。若调用 at() 时指定的索引无效,系统会抛出 out_of_range 异常。若调用 operator [ ] 时所指定的索引无效,其行为不明确,可能访问非法内存,因而引起某些边缘效应甚至崩溃
- 最末字符的更后面位置也有效,故当前实际字符数可被当成一个有效的索引
- front() 相当于 [0]
- 对于 at(),当前字符个数不是有效索引
- 对一个空 string 调用 back(),会导致不明确的行为
比较
操作数:string、C-string
<、<=、>、>=
比较依据:字典序
compare()
返回值:整数值,0 表示相等,小于 0 表示小于,大于 0 表示大于
更改内容
赋值
operator =
作用:对 string 赋予新值
新值:string、C-string、单一字符
成员函数 assign()
string a;
string b;
1.字符串直接赋值
a.assign(b);
a.assign("hyy");
2.一个字符串的子串赋值给另一个字符串
a.assign(b,begin,len);
从字符串 b 的第 begin 个字符开始向后 len 个字符(包括 begin)的字符串赋值给字符串 a
3.从字符串的某一个字符串开始到结束赋值给另一个字符串
a.assign(b,begin);
4.从字符串开始到字符串的某一个字符赋值给另一个字符串
a.assign("hyy",len);
5.用相同的 n 个字符给字符串赋值
a.assign(n,'c');
6.使用迭代器赋值
a.sssign(b.begin(),b.end());
交换
swap()
作用:交换两个 string 内容
令 string 为空
s = "" ;
s.clear();
s.erase();
安插
operator +=:将单一实参附加于 string 末尾
append():接受多个实参指明附加值
insert():需知道安插位置的索引,新字符将被安插于此位置之后;不接受“索引+单字符”的实参,必须传入一个 string 或加上一个额外数字
s.insert ( 0 , ' ' ) ; //ERROR
s.insert ( 0 , " " ) ; //OK
push_back():向 string 末尾添加字符
移除
erase()
pop_back():删除 string 最后一个字符
替换
replace()
改变字符数量
resize():若实参指出的大小比现有字符数少,末尾字符被移除;如实参指出的大小比现有字符数多,则以某个字符填充尾部,可以传入一个字符参数作为填充字符,否则以字符类型 default 构造函数建立填充字符
子串
substr():提取子串
合并字符串
operator +
I/O 操作符
operator >>:从 input stream 读取一个 string
operator >> 的执行方式:
1.若设立了 skipws flag,则跳过开头空格
2.持续读取所有字符,直到发生以下情形之一:
a.下个字符为空白字符
b.Stream 不再处于 good 状态
c.Stream 的 width() 结果大于 0,且目前已读出 width() 个字符
d.已读取 max_size() 个字符
3.Stream width() 被设为0
operator <<:把一个 string 写到 output stream
getline():读取所有字符,包括开头的空白字符,直到遭遇分行符或 end-of-file。分行符会被读取出来但不会不会被附加到结果上
搜索和查找

返回值:返回字符序列中“符合查找条件”的第一个字符的索引
参数:
- 第一个实参,被查找的对象
- 第二个实参,string 内查找的起点(索引),可有可无
- 第三个实参,欲查找的字符个数,即查找范围,查找长度,可有可无
数值转换

- 会跳过前导的任何空白字符
- 允许返回“被处理的 string 的最末字符”后的第一个字符的索引
- 若转换无法发生,抛出
std::invalid_argument;若被转换值超出返回类型可表达范围,抛出std::out_of_range - 对于整数,可以传递基数

迭代器
相关函数
包含 beg 但不包含 end,是半开区间,[beg,end)

相关文章:
stl String
构造函数 表达式 效果 string s 生成一个空的 string s string s(str) Copy 构造函数,创建一个 string str 的拷贝 string s(rvStr) Move 构造函数,创建一个 string 并将 rvStr 的内容搬移给 s string s(str,stridx) 将 string str 内“始于位置…...
java通过ffmpeg将wav音频文件转广播音频编码-G.711文件发送
1.直接将wav文件转g711 [ffmpeg.exe -i F:\\tt\\2.wav -f s16le -ar 8k -ac 1 -acodec pcm_s16le F:\\tt\\2pcm.g711] String cmdFfmpeg = "ffmpeg -i "+localUrl...
【Spring】Springmvc执行流程
介绍 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC的架构模式思想,将Web层进行指责解耦,并管理应用所需的生命周期,为简化日常开发,提供了很大便利。 组件 组件Dispatche…...
游戏软件开发与应用软件开发有什么不同呢?
游戏软件开发和应用软件开发是两种不同类型的软件开发,它们在许多方面都有不同之处。以下是它们之间的一些主要区别: 目标用户群体: 游戏软件开发的主要目标是提供娱乐和休闲体验,通常面向广大的游戏玩家群体。游戏软件的设计和开…...
绥化市中心广场焕发新活力:OLED透明拼接屏的奇观展示
OLED透明拼接屏技术在绥化城市的应用引起了广泛关注。 绥化市位于中国东北地区,是黑龙江省的一个重要城市。 该市拥有悠久的历史,历经多个朝代的兴衰。绥化的历史背景赋予了这座城市独特的文化底蕴和魅力。 绥化市内有许多著名景点,其中最…...
JavaScript(CSS)动画引擎汇总
汇总记录前端实现动画相关的库 1、animejs animejs是一个轻量级的JavaScript动画库,具有简单但功能强大的API。 它适用于CSS属性,SVG,DOM属性和JavaScript对象。 官网anime.js • JavaScript animation engine anime.js - a Collection by…...
第九章-线程
初始时,CPU的执行流为进程;当产生了线程概念后,CPU执行流变为了线程,大大增大了一个周期以内进程的执行速度。 线程产生的作用就是为了提速,利用线程提速,原理就是实现多个执行流的伪并行,让处…...
UI设计师岗位的基本职责八篇
UI设计师岗位的基本职责1 职责: 1. 负责公司互联网产品app、web、h5等的用户界面设计工作; 2. 负责运营活动相关的平面及视频设计支持; 3. 负责完成产品相关的界面、图标、动画等的图形界面设计,并参与制定、编写产品视觉设计规范文档; 4. 整理和分…...
【了解一下,单例模式的实现方法--Java】
文章目录 单例模式的实现方法--Java1. 饿汉式单例模式(在类加载时创建实例):2. 懒汉式单例模式(在需要时创建实例,线程不安全):3. 静态内部类方式(懒加载,且线程安全&…...
C++实现enum反射,类似magic_enum,支持enum classes
C实现enum反射,类似magic_enum,支持enum classes 有一个 enum EnumTest { a 1, b, c };首先我们想实现 template <typename T, T N> std::string GetEnumName() {return __PRETTY_FUNCTION__; }这样打印 GetEnumName<EnumTest,static_cast…...
机器学习与模式识别作业----决策树属性划分计算
文章目录 1.决策树划分原理1.1.特征选择1--信息增益1.2.特征选择2--信息增益比1.3.特征选择3--基尼系数 2.决策树属性划分计算题2.1.信息增益计算2.2.1.属性1的信息增益计算2.2.2.属性2的信息增益计算2.2.3.属性信息增益比较 2.2.信息增益比计算2.3.基尼系数计算 1.决策树划分原…...
爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会
标题:爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会 网址:https://fgw.sh.gov.cn/fgw-interaction-front/biz/projectApproval/home MD5加密:ca7f5c978b1809d15a4b228198814253 需求文档 采集数据如下所示: 解决反爬思路 这里只提供解决思路,解决反爬,…...
网络代理技术的威力:保障安全、保护隐私
在如今高度互联的数字时代,网络代理技术正在崭露头角,为网络工程师和普通用户提供了保障网络安全和隐私的强大工具。本文将深入探讨Socks5代理、IP代理以及它们在网络安全、爬虫开发和HTTP协议中的关键作用。 1. Socks5代理:多功能的网络中继…...
【STM32 中断】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32中断 前言一、STM32的中断如何?如何管理这么复杂的中断?实际优先级如下怎么使用呢? 二、使用步骤1.引入库函数先分组,怎么…...
TensorFlow入门(十二、分布式训练)
1、按照并行方式来分 ①模型并行 假设我们有n张GPU,不同的GPU被输入相同的数据,运行同一个模型的不同部分。 在实际训练过程中,如果遇到模型非常庞大,一张GPU不够存储的情况,可以使用模型并行的分布式训练,把模型的不同部分交给不同的GPU负责。这种方式存在一定的弊端:①这种方…...
在React中,什么是props(属性)?如何向组件传递props?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
java 每种设计模式的作用,与应用场景
文章目录 前言java 每种设计模式的作用,与应用场景 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实在白嫖的话࿰…...
Appium问题及解决:打开Appium可视化界面,点击搜索按钮,提示inspectormoved
打开Appium可视化界面,点击搜索按钮,提示inspectorMoved,那么如何解决这个问题呢? 搜索了之后发现,由于高版本Appium(从1.22.0开始)的服务和元素查看器分离,所以还需要下载Appium In…...
android 不同进程之间数据传递
1.handler android.os.Message是定义一个Messge包含必要的描述和属性数据,并且此对象可以被发送给android.os.Handler处理。属性字段:arg1、arg2、what、obj、replyTo等;其中arg1和arg2是用来存放整型数据的;what是用来保存消息标…...
一个完整的初学者指南Django-part1
源自:https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html 一个完整的初学者指南Django - 第1部分 介绍 今天我将开始一个关于 Django 基础知识的新系列教程。这是一个完整的 Django 初学者指南。材料分为七…...
Rufus技术解析:Windows环境下创建ext2/ext3/ext4文件系统的最佳实践
Rufus技术解析:Windows环境下创建ext2/ext3/ext4文件系统的最佳实践 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus作为可靠的USB格式化工具,在Windows平台上为Linu…...
远程办公团队如何高效协作:项目管理的10条黄金法则
远程办公团队如何高效协作?本文结合10年项目管理实践,总结出目标对齐、书面共识、责任分工、沟通节奏、进度透明、风险预警、反馈复盘和团队信任等10条黄金法则,帮助管理者提升远程协作效率与项目交付质量。 远程办公已经成为许多团队的常态协…...
不只是 Copilot:一个完整 AI 软件交付团队的实践 - iforgeAI - 用更少的Tokens,办大事
在实际的软件开发过程中,一个完整的交付往往不是“写代码”这么简单。 从需求分析、架构设计、数据库建模,到 UI 设计、开发实现、测试与部署,每一个阶段都依赖不同角色的协作。 问题在于: 角色之间信息断层严重 文档不统一、不…...
Matlab进阶技巧:如何用hatchfill2和legendflex打造专业级纹理柱状图
Matlab数据可视化进阶:用hatchfill2与legendflex打造学术级纹理柱状图 在科研论文或商业报告中,单调的纯色柱状图往往难以清晰传达多维数据的层次关系。当需要区分5种以上的数据类别时,即使用尽所有高对比度颜色,依然会面临辨识度…...
掌握4大核心策略,让你的暗黑3效率提升200%:D3KeyHelper自动化配置全指南
掌握4大核心策略,让你的暗黑3效率提升200%:D3KeyHelper自动化配置全指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3Ke…...
用Logisim从零搭建一个24小时数字时钟:从计数器到完整计时器的保姆级教程
用Logisim从零搭建一个24小时数字时钟:从计数器到完整计时器的保姆级教程 数字时钟是现代生活中不可或缺的设备,但你是否曾好奇过它的内部工作原理?在数字电路的世界里,构建一个24小时计时器不仅是一项有趣的实践,更是…...
Nix系统修复终极指南:快速解决包管理问题与数据恢复
Nix系统修复终极指南:快速解决包管理问题与数据恢复 【免费下载链接】nix Nix, the purely functional package manager 项目地址: https://gitcode.com/gh_mirrors/ni/nix Nix作为一款纯粹函数式的包管理器,以其独特的依赖管理和环境隔离机制受到…...
终极Lens界面定制指南:3个实用技巧提升Kubernetes管理效率
终极Lens界面定制指南:3个实用技巧提升Kubernetes管理效率 【免费下载链接】lens Lens - The way the world runs Kubernetes 项目地址: https://gitcode.com/gh_mirrors/le/lens Lens作为全球最受欢迎的Kubernetes IDE,凭借其直观的上下文感知界…...
mmdetection2.11.0实战:如何用VOC和COCO数据集精准计算每个类别的mAP(附避坑指南)
mmdetection2.11.0实战:VOC与COCO数据集mAP计算全解析与避坑指南 在目标检测领域,mAP(mean Average Precision)是衡量模型性能的核心指标。但不同数据集(如VOC和COCO)的评估标准差异,常常让研究…...
零基础部署Ostrakon-VL-8B:餐饮零售专用AI,看图就能做巡检
零基础部署Ostrakon-VL-8B:餐饮零售专用AI,看图就能做巡检 1. 餐饮零售行业的AI巡检革命 想象一下这样的场景:你是一家连锁餐饮企业的区域经理,负责管理20家门店的日常运营。每周,你需要花费大量时间亲自走访每家门店…...
