C++string 类的常用方法

string (构造函数)

(1) default

构造长度为零字符的空字符串。

(2) copy

构造 str 的副本。

(3) substring

复制从字符位置 pos 开始并跨越 len 字符的 str 部分(如果任一 str 太短或 len 为 string::npos,则复制 str 的末尾)。

(4) from c-string

复制以 null(\0) 结尾的字符序列(C 字符串)。

(5)from sequence

从 s 指向的字符数组中复制前 n 个字符。

(6) fill 

用字符 c 的 n 个连续副本填充字符串。

operator= (为字符串分配一个新值,替换其当前内容)

字符串赋值

为字符串分配一个新值,替换其当前内容。

size 和 lengh (返回字符串的长度)

 这两个成员函数功能是一样的:

字符串的返回长度

返回字符串的长度(以字节为单位)。
这是符合字符串内容的实际字节数,不一定等于其存储容量。

 operator[](返回对字符串中位置 pos 处的字符的引用)

 返回字符串中位置 pos 处的字符的引用。

 operator[] 会越界检查( assert(pos<s.size()) )

const char& operator[] (size_t pos) const;

迭代器 (返回指向字符串字符位置的迭代器的迭代器)

返回开始位置的迭代器。 

返回最后一个字符下一个位置的迭代器。 

我们暂且可以将迭代器理解为一个像指针一样的东西。

 iterator 是定义在类域里面的

 我们可以通过迭代器来修改指向的内容

 返回最后一个字符位置的迭代器。 

返回开始位置的前一个位置的迭代器。  

注意:rend 和 begin 是不能混合用的

这里++底层是--,<底层是>。

sort(按升序对区域中的元素进行排序)(字典序)

需要头文件<algorithm> 

push_back (将字符 c 追加到字符串的末尾)

将字符附加到字符串

将字符 c 追加到字符串的末尾,将其长度增加 1。

 append(通过在当前值的末尾附加其他字符来扩展字符串)

(1) string

附加 str 的副本。

(2)substring

追加 str 子字符串的副本。子字符串是 str 中从字符位置 subpos 开始并跨越 sublen 字符的部分(或者直到 str 的末尾,如果任一 str 太短或 sublen 是 string::npos)。

(3)c-string

追加由 s 指向的以 \0 结尾的字符序列(C 字符串)构成的字符串的副本。

(4)buffer

追加 s 指向的字符数组中前 n 个字符。

(5) fill

连续n 个字符 c 。

(6) range

按相同的顺序追加 [first,last] 范围内字符序列的副本。

operator+= (通过在当前值的末尾附加其他字符来扩展字符串)

追加到字符串

通过在当前值的末尾附加其他字符来扩展字符串:

对比上面两个还是+=更加好用:

 pop_back(尾删)

尾删:

 erase(擦除部分字符串,减少其长度)

(1)sequence

擦除字符串值中从字符位置 pos 开始并跨越 len 字符的部分(如果len>st.size()或 len 为 string::npos,则擦除字符串值的末尾。)

请注意,默认参数会擦除字符串中的所有字符(如成员函数 clear)。

(2) character

擦除 p 指向的字符。

(3) range

擦除 [first,last] 范围内的字符序列。

 insert(在字符串中插入其他字符,紧挨着 pos(或 p)指示的字符)

(1) string

插入 str 的副本。

(2) substring

插入 str 的子字符串的副本。子字符串是 str 中从字符位置 subpos 开始并跨越 sublen 字符的部分(或者直到 str 的末尾,如果任一 str 太短或 sublen 是 npos)。

(3) c-string

插入由 s 指向的以 null 结尾的字符序列(C 字符串)形成的字符串的副本。

(4) buffer

在以 s 为指的字符数组中插入前 n 个字符的副本。

(5) fill

插入字符 c 的 n 个连续副本。

(6) single character

插入字符 c

(7) range

 以相同的顺序在 [first,last] 范围内插入字符序列的副本。

 erase 与 insert 类似,效率低慎用。

replace(替换字符串的一部分)

替换字符串的一部分

用新内容替换字符串中从字符 pos 开始并跨越 len 字符的部分(或字符串在 [i1,i2) 之间的部分):

效率不高,慎用。 

reserve (将字符串容量调整为计划的大小)

请求更改容量

请求将字符串容量调整为计划的大小更改,长度最多为 n 个字符。

vs 默认是不能缩容的

g++ 会缩

resize(将字符串大小调整为 n 个字符的长度)

调整字符串大小

将字符串大小调整为 n 个字符的长度。
如果 n 小于当前字符串长度,则当前值将缩短为n 个字符,从而删除第 n个字符之外的字符。

resize()只能扩容不能缩容。 

at(返回对字符串中位置 pos 处的字符)

获取字符串中的字符

返回对字符串中位置 pos 处的字符的引用。

下面是at 和 operator[] 的区别

 

 find rfind (查找字符串中内容的出现项)

在字符串中查找内容 

在字符串中搜索其参数指定的序列的第一次出现

第一个匹配的第一个字符的位置。
如果未找到匹配项,该函数将返回 string::npos。

 

 查找字符串中内容的最后出现项

在字符串中搜索其参数指定的序列的最后一次出现项。
与find 一样没找到的话返回 npos。

因此我们可以利用这个机制来找文件后缀。 

substr(生成子字符串)

子字符串是对象中从pos位置开始并跨越len个字符的部分 。

pos:

  1. 要作为子字符串复制的第一个字符的位置。
  2. 如果这等于字符串长度,则该函数返回一个空字符串。
  3. 如果这大于字符串长度,则抛出out_of_range。
  4. 注意:第一个字符用值 0(不是 1)表示。

len

        子字符串中要包含的字符数(如果字符串较短,则使用尽可能多的字符)。
         指示字符串末尾之前的所有字符。

从后面开始往前找。 

找到与(“/\\")这两个字符匹配的任意一个字符返回下标

注意\\ 是转义字符实际上代表 \  

这个则是从头开始找

 operator+(返回一个新构造的字符串对象)

返回一个新构造的字符串对象,其值是 lhs 中字符的串联,后跟 rhs 的字符。

 relational operators (string)(关系运算符)

字符串的关系运算符

在字符串对象 lhs 和 rhs 之间执行适当的比较操作

按照字典序比较

 swap(交换两个字符串的值)

 

将字符串插入到流中和从流中提取字符串 

 

 但是cin 有一点不好的是

cin 流提取有一个特点就是遇到空格或者换行他就结束

默认规定空格或者换行是多个值之间的分割

 怎样提取完整呢?如下

getline(将行从流获取到字符串)

从 is 中提取字符并将它们存储到 str 中,直到找到分隔符 delim(或换行符 '\n',用于 (2))。

如果在 is 中到达文件末尾,或者在输入操作期间发生其他错误,则提取也会停止。

如果找到分隔符,则将其提取并丢弃(即不存储分隔符,并在其之后开始下一个输入操作)。

请注意,调用之前的任何内容都将替换为新提取的序列。

感谢大家的观看! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10965.shtml

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

相关文章

Leaflet.canvaslabel在Ajax异步请求时bindPopup无效的解决办法

目录 前言 一、场景重现 1、遇到问题的代码 2、问题排查 二、通过实验验证猜想 1、排查LayerGroup和FeatureGroup 2、排查Leaflet.canvaslabel.js 三、柳暗花明又一村 1、点聚类的办法 2、歪打正着 总结 前言 在上一篇博客中介绍了基于SpringBoot的全国风景区WebGIS按…

免疫优化算法(Immune Optimization Algorithm)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 免疫算法是一种模拟生物免疫系统的智能优化算法。想象一下&#xff0c;当我们的身体遇到病毒或细菌侵袭时&#xff0c;免疫系统会启动…

DHCP原理

什么是DHCP DHCP (Dynamic Host Configuration Protocol,动态主机配置协议&#xff09;是由Internet工作任务小组设计开发的&#xff0c;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议&#xff0c;是一个应用层协议&#xff0c;使用UDP的67和68端口。 DHCP的前身是B…

Windows下安装 Emscripten 详细过程

背景 最近研究AV1编码标准的aom编码器&#xff0c;编译的过程中发现需要依赖EMSDK&#xff0c;看解释EMSDK就是Emscripten 的相应SDK&#xff0c;所以此博客记录下EMSDK的安装过程&#xff1b;因为之前完全没接触过Emscripten 。 Emscripten Emscripten 是一个用于将 C 和 …

[hpssupfast@mailfence.com].Elbie勒索病毒如何恢复数据和预防

[hpssupfastmailfence.com].Elbie是一种新型勒索病毒,快速恢复重要数据请添加技术服务号(safe130)。以下是关于elbie勒索病毒的详细信息&#xff1a; 病毒介绍&#xff1a; elbie勒索病毒&#xff0c;也称为PHOBOS勒索软件&#xff0c;它通过加密文件并要求支付赎金以恢复对文…

涉案财物管理系统|DW-S405系统全国都有案例

涉案财物管理系统&#xff08;智财物&#xff1a;DW-S404&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对涉密载体进行统一管理、分析的信息化、智能化、规范化的系统。 涉案财物管理系统主要实现对涉案物品进…

RisingWave基本操作

什么是RisingWave RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库。RisingWave 让用户使用操作传统数据库的方式来处理流数据。通过创建实时物化视图&#xff0c;RisingWave 可以让用户轻松编写流计算逻辑&#xff0c;并通过访问物化视图来对流计算结果进行及时、…

分享一个处理大文件效率拉满的神器

&#x1f3c3;‍♂️ 微信公众号: 朕在debugger© 版权: 本文由【朕在debugger】原创、需要转载请联系博主&#x1f4d5; 如果文章对您有所帮助&#xff0c;欢迎关注、点赞、转发和订阅专栏&#xff01; 前言 系统当天有些表的数据需要恢复成前一天的样子&#xff0c;幸好有…

Rpcx (一):详解【介绍、基础示例 demo】

一.rpcx介绍 1.1 rpc是什么 远程过程调用的通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。简单地说就是能使应用像调用本地…

【动态规划】子序列问题I|最长递增子序列|摆动序列|最长递增子序列的个数|最长数对链

一、最长递增子序列 300. 最长递增子序列 算法原理&#xff1a; &#x1f4a1;细节&#xff1a; 1.注意子序列和子数组的区别&#xff1a; (1)子序列&#xff1a;要求顺序是固定的&#xff08;要求没那么高&#xff0c;所以子序列就多一些&#xff09; (2)子数组&#xff1a;要…

2024年深圳市教师招聘报名流程(建议电脑)

2024年深圳市教师招聘报名流程&#xff08;建议电脑&#xff09; #深圳教师招聘 #深圳教招 #深圳教师招聘考试 #教师招聘报名照片处理 #深圳教师招聘笔试

(Java)心得:LeetCode——19.删除链表的倒数第 N 个节点

一、原题 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…

1-02-02:虚拟化与容器化Docker环境搭建

1.02.02 虚拟化与容器化Docker环境搭建 一. 虚拟化与容器化技术简介1. 虚拟机环境2. docker环境 二. Docker 架构与隔离机制2.1 Docker 架构2.2 Docker 隔离机制2.3 资源限制2.4 Docker应用场景 三. 实战:Docker在Centos7安装与镜像加速 ❤❤❤3.1 docker安装3.2 设置镜像加速 …

17 SPI FLASH读写

SPI 协议简介 SPI 即 Serial Periphera linterface 的缩写&#xff0c;顾名思义就是串行外围设备接口&#xff0c;主要用于与FLASH、实时时钟、AD 转换器等外设模块的通信&#xff0c;它是一种高速的全双工同步的通信总线。 SPI 设备分为主设备和从设备&#xff0c;SPI 通信必…

crossover24中文破解版百度云免费下载 crossover永久免激活汉化包安装使用教程 crossover24激活码分享

原则上&#xff0c;我们不提倡各位使用破解版&#xff0c;这是处于对知识产权的保护&#xff0c;也是为了各位的长远利益。使用正版你可以获得更优质的服务和完善的产品功能。 但仍然有部分用户由于预算、使用习惯等原因&#xff0c;需要破解版。所以本文不讲原则&#xff0c;…

有没有适合女生或者宝妈下班后可以做的副业?

宝妈与上班族女生的新篇章&#xff1a;水牛社副业兼职之旅 在繁忙的职场和温馨的家庭之间&#xff0c;不少女性渴望找到一种既能兼顾家庭又能实现自我价值的兼职方式。对于上班族女生和宝妈们来说&#xff0c;水牛社这样的线上任务平台为她们提供了一个全新的选择。 上班族女…

【备战软考(嵌入式系统设计师)】12 - 嵌入式系统总线接口

我们嵌入式系统的总线接口可以分为两类&#xff0c;一类是并行接口&#xff0c;另一类是串行接口。 并行通信就是用多个数据线&#xff0c;每条数据线表示一个位来进行传输数据&#xff0c;串行接口就是一根数据线可以来一位一位地传递数据。 从上图也可以看出&#xff0c;并行…

SR3-05S电机保护器 施耐德 EOCR-SR3

EOCR-SR3电机保护器 施耐德 EOCR主要产品有电子式电动机保护继电器&#xff0c;电子式过电流继电器&#xff0c;电子式欠电流继电器&#xff0c;电子式欠电压继电器&#xff0c;其它保护和监视装置&#xff0c;电流互感器。 系列型号&#xff1a; EOCR-SR3-05S EOCR-SR3-30…

VR全景技术在养老院的应用优势浅析

随着时代的快速发展&#xff0c;人口老龄化越来越严重&#xff0c;如何利用VR技术提升养老服务的质量&#xff0c;成为了社会各界关注的焦点。为养老院拍摄制作VR全景&#xff0c;不仅能够为养老院的老人子女们跨越空间限制&#xff0c;实现与家人的情感连接&#xff0c;还可以…

Vditor集成于VUE笔记

文章目录 前言一、安装Vditor二、渲染markdown三、options3.1 自建CDN3.2 outline大纲不显示、不跳转问题3.3 upload 图片/视频上传3.4 toolbar提示位置点击事件more中文字 3.5 sv分屏渲染模式隐藏编辑框3.6 after中的insertValue或者setValue 前言 Vditor是一款易于使用的 Ma…