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 初学者指南。材料分为七…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...

Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...

数据挖掘是什么?数据挖掘技术有哪些?
目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...