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 中到达文件末尾,或者在输入操作期间发生其他错误,则提取也会停止。

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

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

感谢大家的观看! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧粮库/粮仓视频监管系统:AI视频智能监测保障储粮安全

智慧粮库视频监管系统是一种基于物联网、AI技术和视频监控技术的先进管理系统&#xff0c;主要用于对粮食储存环境进行实时监测、数据分析和预警。TSINGSEE青犀智慧粮库/粮仓视频智能管理系统方案通过部署多区域温、湿度、空气成分等多类传感器以及视频监控等设施&#xff0c;对…

AI漫改头像生成漫画,轻松日入1000+,操作简单好上手,互联网新项目新风口

AI漫改头像也差不多火了大半年了&#xff0c;一般流水的项目都活不过三个月&#xff0c;目前该项目至少存活了七个月了。 利用AI 软件将真人照片生成漫画形象&#xff0c;这看起来简单的方法&#xff0c;却在小红书上大伙大热。这完全是一个0成本的项目&#xff0c;漫画形象制作…

windows窗口消息队列与消息过程处理函数

在Windows窗口应用程序中&#xff0c;消息队列和窗口过程函数是实现消息驱动机制的核心组件。 消息队列&#xff08;Message Queue&#xff09;&#xff1a; 消息队列是用于存储窗口消息的缓冲区。当用户与应用程序交互时&#xff0c;系统会将生成的消息插入到消息队列中&…

报告!Golang冲上来啦!

今天又来讲Go语言&#xff0c;根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名&#xff0c;令人瞩目的是&#xff0c;Go语言已经跃升至历史最高位&#xff0c;位列排行榜第七名&#xff0c;并且Go语言是前十榜单中最年轻的编程语言。这一成绩不仅彰显了Go语…

驾驭多云环境,加速AI创新丨Animbus Cloud 8.3.0 算力调度平台升级发布

大模型开启全球新一轮AI浪潮&#xff0c;伴随算力规模的爆发增长以及计算技术的多元创新&#xff0c;需要更稳定、高效、敏捷的异构计算基础设施&#xff0c;才能充分发挥对算力能力的重要支撑。 作为开放智能云边架构引领者&#xff0c;九州未来凭借多年的技术积累、实践沉淀…

Libcity 笔记:自定义模型

在/libcity/model/trajectory_loc_prediction/&#xff0c;我们复制一份Deepmove.py&#xff0c;得到DM_tst.py&#xff0c;我们不改变其中的机制&#xff0c;只动class name 然后修改相同目录下的__init__.py&#xff1a; 修改task_config文件&#xff1a; 在config/model/tra…

Matlab-粒子群优化算法实现

文章目录 一、粒子群优化算法二、相关概念和流程图三、例题实现结果 一、粒子群优化算法 粒子群优化算法起源于鸟类觅食的经验&#xff0c;也就是一群鸟在一个大空间内随机寻找食物&#xff0c;目标是找到食物最多的地方。以下是几个条件: (1) 所有的鸟都会共享自己的位置以及…

五一相亲的华为男:女方嫌弃“不像年薪百万”

上一篇&#xff1a;这才是作为人的生活&#xff1a;某大厂员工&#xff0c;200万存款靠利息生活 在这个看重外貌、车辆和房产的社会&#xff0c;相亲往往变成了一场隐秘而激烈的竞争。 作为一名985高校的硕士毕业生&#xff0c;拥有华为六年工作经验的我&#xff0c;33岁&#…

【算法系列】栈

目录 leetcode题目 一、删除字符串中的所有相邻重复项 二、比较含退格的字符串 三、基本计算器 II 四、字符串解码 五、验证栈序列 六、有效的括号 七、最小栈 八、逆波兰表达式求值 九、用栈实现队列 十、用队列实现栈 leetcode题目 一、删除字符串中的所有相邻重…

带头单链表 C++实现

节点定义 带头单链表&#xff1a;我们只需要一个结点指针指向整个链表的第一个节点&#xff0c;这样我们就可以通过next指针访问整个链表内的所有节点 template<class T> struct ListNode {T _val;ListNode* _next;ListNode(const T &val):_val(val),_next(nullptr){…

对数据进行标准化和归一化

数据的形式&#xff1a;保存在CSV中&#xff0c;第一列为姓名&#xff0c;第二列之后为特征。 标准化 输入文件的路径&#xff0c;设置保存转化后的文件路径 import pandas as pd from sklearn.preprocessing import StandardScaler# 读取CSV文件 data pd.read_csv(rC:\User…

上位机图像处理和嵌入式模块部署(树莓派4b使用的注意事项)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派系列开发板最早的时候&#xff0c;价格还是比较高的。不过由于它生态比较丰富&#xff0c;使用起来比较方便&#xff0c;所以大家都默认了它…

代码已经推送到远程,如何退回之前的提交记录

现状&#xff1a;代码已经推送到远程&#xff0c;如何退回之前的提交记录 Sourcetree工具实现 最后使用命令强制推送&#xff1a; git push origin dev --forceidea 工具实现 强行推送

google test 使用指南

目录 测试项目 calculator.h calculator.cpp test01.cpp 创建新项目 选择Google Test 选择要测试的项目 pch.cpp 加入依赖 设为启动项目 ​编辑 运行 ​编辑 关键点 测试项目 calculator.h #ifndef __CALCULATOR_H__ #define __CALCULATOR_H__#include <i…

远程调用feign的使用

在orderservice子工程中 <!--feign的远程--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>启动类加上这个注解 EnableFeignClients //自动装配…

数据结构与算法学习笔记之线性表二---顺序表的静态存储表示和实现(C++)

目录 前言 1.什么是顺序表 2.顺序表的静态存储表示 1.初始化 2.长度 3.数据元素 4.长度 5.获取元素下标 6.前驱节点 7.后继节点 8.插入 9.删除 10.遍历 11.测试代码 前言 这篇文章讲的是顺序表的两种实现方式。 1.什么是顺序表 线性表的顺序表示指的是用一组地址…

电商核心技术揭秘56: 社群营销的未来趋势与挑战

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 电商技术揭秘四十一&#xff1a;电商平台的营销系统浅析 电商技术揭秘四十二&#…

LeetCode100题总结

LeetCode100题总结 前言LeetCode100题总结题型梳理双指针11. 盛最多水的容器234.回文链表75.颜色分类206.反转链表142.环形链表215.三数之和 滑动窗口3. 无重复字符的最长子串209. 长度最小的子数组438. 找到字符串中所有字母异位词 广搜102. 二叉树的层序遍历200. 岛屿数量617…

ppt保存文件奇怪问题

我发现ppt中的形状保存成jpg,png和pdf时&#xff0c;格式不一样 比如 当右键单击时&#xff0c;然后选择另存为图片 png格式 jpg格式 pdf格式 感觉还是很奇怪&#xff0c;就pdf的格式比较靠谱一点

LLM-KERec

1、LLM-KERec整体框架 LLM-KERec系统包括传统推荐模块和基于LLM的互补知识增强模块。传统推荐模块负责召回候选商品、粗排过滤、精排和重排。LLM互补知识增强模块则包括实体提取器、互补图构造、E-E-I权重决策模型等&#xff0c;以整合互补知识&#xff0c;增强推荐效果。 2、…