当前位置: 首页 > news >正文

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。分行符会被读取出来但不会不会被附加到结果上

搜索和查找

返回值:返回字符序列中“符合查找条件”的第一个字符的索引

参数:

  1. 第一个实参,被查找的对象
  2. 第二个实参,string 内查找的起点(索引),可有可无
  3. 第三个实参,欲查找的字符个数,即查找范围,查找长度,可有可无

数值转换

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

迭代器

相关函数

包含 beg 但不包含 end,是半开区间,[beg,end)

相关文章:

stl String

构造函数 表达式 效果 string s 生成一个空的 string s string s(str) Copy 构造函数&#xff0c;创建一个 string str 的拷贝 string s(rvStr) Move 构造函数&#xff0c;创建一个 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框架&#xff0c;使用了MVC的架构模式思想&#xff0c;将Web层进行指责解耦&#xff0c;并管理应用所需的生命周期&#xff0c;为简化日常开发&#xff0c;提供了很大便利。 组件 组件Dispatche…...

游戏软件开发与应用软件开发有什么不同呢?

游戏软件开发和应用软件开发是两种不同类型的软件开发&#xff0c;它们在许多方面都有不同之处。以下是它们之间的一些主要区别&#xff1a; 目标用户群体&#xff1a; 游戏软件开发的主要目标是提供娱乐和休闲体验&#xff0c;通常面向广大的游戏玩家群体。游戏软件的设计和开…...

绥化市中心广场焕发新活力:OLED透明拼接屏的奇观展示

OLED透明拼接屏技术在绥化城市的应用引起了广泛关注。 绥化市位于中国东北地区&#xff0c;是黑龙江省的一个重要城市。 该市拥有悠久的历史&#xff0c;历经多个朝代的兴衰。绥化的历史背景赋予了这座城市独特的文化底蕴和魅力。 绥化市内有许多著名景点&#xff0c;其中最…...

JavaScript(CSS)动画引擎汇总

汇总记录前端实现动画相关的库 1、animejs animejs是一个轻量级的JavaScript动画库&#xff0c;具有简单但功能强大的API。 它适用于CSS属性&#xff0c;SVG&#xff0c;DOM属性和JavaScript对象。 官网anime.js • JavaScript animation engine anime.js - a Collection by…...

第九章-线程

初始时&#xff0c;CPU的执行流为进程&#xff1b;当产生了线程概念后&#xff0c;CPU执行流变为了线程&#xff0c;大大增大了一个周期以内进程的执行速度。 线程产生的作用就是为了提速&#xff0c;利用线程提速&#xff0c;原理就是实现多个执行流的伪并行&#xff0c;让处…...

UI设计师岗位的基本职责八篇

UI设计师岗位的基本职责1 职责&#xff1a; 1. 负责公司互联网产品app、web、h5等的用户界面设计工作; 2. 负责运营活动相关的平面及视频设计支持; 3. 负责完成产品相关的界面、图标、动画等的图形界面设计&#xff0c;并参与制定、编写产品视觉设计规范文档; 4. 整理和分…...

【了解一下,单例模式的实现方法--Java】

文章目录 单例模式的实现方法--Java1. 饿汉式单例模式&#xff08;在类加载时创建实例&#xff09;&#xff1a;2. 懒汉式单例模式&#xff08;在需要时创建实例&#xff0c;线程不安全&#xff09;&#xff1a;3. 静态内部类方式&#xff08;懒加载&#xff0c;且线程安全&…...

C++实现enum反射,类似magic_enum,支持enum classes

C实现enum反射&#xff0c;类似magic_enum&#xff0c;支持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 需求文档 采集数据如下所示: 解决反爬思路 这里只提供解决思路,解决反爬,…...

网络代理技术的威力:保障安全、保护隐私

在如今高度互联的数字时代&#xff0c;网络代理技术正在崭露头角&#xff0c;为网络工程师和普通用户提供了保障网络安全和隐私的强大工具。本文将深入探讨Socks5代理、IP代理以及它们在网络安全、爬虫开发和HTTP协议中的关键作用。 1. Socks5代理&#xff1a;多功能的网络中继…...

【STM32 中断】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 STM32中断 前言一、STM32的中断如何&#xff1f;如何管理这么复杂的中断&#xff1f;实际优先级如下怎么使用呢&#xff1f; 二、使用步骤1.引入库函数先分组&#xff0c;怎么…...

TensorFlow入门(十二、分布式训练)

1、按照并行方式来分 ①模型并行 假设我们有n张GPU,不同的GPU被输入相同的数据,运行同一个模型的不同部分。 在实际训练过程中,如果遇到模型非常庞大,一张GPU不够存储的情况,可以使用模型并行的分布式训练,把模型的不同部分交给不同的GPU负责。这种方式存在一定的弊端:①这种方…...

在React中,什么是props(属性)?如何向组件传递props?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

java 每种设计模式的作用,与应用场景

文章目录 前言java 每种设计模式的作用&#xff0c;与应用场景 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0…...

Appium问题及解决:打开Appium可视化界面,点击搜索按钮,提示inspectormoved

打开Appium可视化界面&#xff0c;点击搜索按钮&#xff0c;提示inspectorMoved&#xff0c;那么如何解决这个问题呢&#xff1f; 搜索了之后发现&#xff0c;由于高版本Appium&#xff08;从1.22.0开始&#xff09;的服务和元素查看器分离&#xff0c;所以还需要下载Appium In…...

android 不同进程之间数据传递

1.handler android.os.Message是定义一个Messge包含必要的描述和属性数据&#xff0c;并且此对象可以被发送给android.os.Handler处理。属性字段&#xff1a;arg1、arg2、what、obj、replyTo等&#xff1b;其中arg1和arg2是用来存放整型数据的&#xff1b;what是用来保存消息标…...

一个完整的初学者指南Django-part1

源自&#xff1a;https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html 一个完整的初学者指南Django - 第1部分 介绍 今天我将开始一个关于 Django 基础知识的新系列教程。这是一个完整的 Django 初学者指南。材料分为七…...

SpringBoot和Hibernate——如何提高数据库性能

摘要&#xff1a;本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 在软件开发领域&#xff0c;性能是重中之重。无论您是构建小型 Web 应用程序还是大型企业系统…...

五分钟Win11安装安卓(Android)子系统

十分钟&#xff0c;完成win11安装安卓子系统 Step1、地区设置为美国 Wini 进入设置页面&#xff0c;选择时间和语言-语言和区域- 区域-美国 Step2 安装 Windows Subsystem for Android™ with Amazon Appstore 访问如下连接&#xff0c;install即可 安卓子系统 Step3 安…...

基于LSTM-Adaboost的电力负荷预测的MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 主要内容&#xff1a; LSTM-AdaBoost负荷预测模型先通过 AdaBoost集成算法串行训练多个基学习器并计算每个基学习 器的权重系数,接着将各个基学习器的预测结果进行线性组合,生成最终的预测结果。代码中的LST…...

GLTF纹理贴图工具让模型更逼真

1、如何制作逼真的三维模型&#xff1f; 要使三维模型看起来更加逼真&#xff0c;可以考虑以下几个方面&#xff1a; 高质量纹理&#xff1a;使用高分辨率的纹理贴图可以增强模型的细节和真实感。选择适合模型的高质量纹理图像&#xff0c;并确保纹理映射到模型上的UV坐标正确…...

HttpServletResponse对象

1.介绍 在Servlet API中&#xff0c;定义了一个HttpServletResponse接口&#xff0c;它继承自ServletResponse接口&#xff0c;专门用来封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、消息体三部分&#xff0c;因此&#xff0c;在HttpServletResponse接口中定义…...

在SSL中进行交叉熵学习的步骤

在半监督学习&#xff08;Semi-Supervised Learning&#xff0c;SSL&#xff09;中进行交叉熵学习通常包括以下步骤&#xff1a; 准备标注数据和未标注数据 首先&#xff0c;你需要准备带有标签的标注数据和没有标签的未标注数据。标注数据通常是在任务中手动标记的&#xff…...

10月TIOBE榜Java跌出前三!要不我转回C#吧

前言 Java又要完了&#xff0c;又要没了&#xff0c;你没看错&#xff0c;10月编程语言榜单出炉&#xff0c;Java跌出前三&#xff0c;并且即将被C#超越&#xff0c;很多资深人士预测只需两个月&#xff0c;Java就会跌出前五。 看到这样的文章&#xff0c;作为一名Java工程师我…...

优盘中毒了怎么办?资料如何恢复

在现代社会中&#xff0c;优盘成为我们日常生活与工作中必备的便携式存储设备。然而&#xff0c;正是由于其便携性&#xff0c;优盘也成为病毒感染的主要目标之一。本篇文章将帮助读者了解如何应对优盘中毒的情况&#xff0c;以及如何恢复因病毒感染丢失的资料。 ▶优盘为什么…...

如何查看端口占用(windows,linux,mac)

如何查看端口占用&#xff0c;各平台 一、背景 如何查看端口占用&#xff1f;网上很多&#xff0c;但大多直接丢出命令&#xff0c;没有任何解释关于如何查看命令的输出 所谓 “查端口占用”&#xff0c;即查看某个端口是否被某个程序占用&#xff0c;如果有&#xff0c;被哪…...

Photoshop与Web技术完美融合,Web版Photoshop已正式登场

通过WebAssembly Emscripten、Web Components Lit、Service Workers Workbox以及对新的Web API的支持&#xff0c;Chrome和Adobe之间的合作使得将Photoshop桌面应用程序引入Web成为了一项重大的里程碑。现在&#xff0c;您可以在浏览器上使用高度复杂和图形密集的软件&#…...