string的简单操作

目录

string的接口说明

构造

constructor

operator=

迭代器操作

begin( )和end( )

rbegin( ) 和 rend( )

范围for和迭代器的关系

范围for

迭代器

容量

size

lengtn

max_size

resize

capacity

reserve

clear

empty

string类的元素访问

operator[ ]

at

front()

back()

string类对象的修改器(Modifiers)

operator+=

append

​编辑

​编辑

push_back

insert

erase

swap

pop_back

string类对象的操作函数(operations)

c_str

data()

copy()

find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()

substr

compare()

string类对象的非成员函数和npos

npos

operator+(重载运算符+)

关系运算符(Relational operators)

getline()


string是一个字符序列的类

string的接口说明

构造

constructor

operator=

迭代器操作

begin( )和end( )

begin() 函数返回一个指向字符串首字符的迭代器,而 end() 函数返回一个指向字符串末尾后一个字符的迭代器(末尾后的一个位置)

rbegin( ) 和 rend( )

这里的string::reverse_iterator可以用auto代替

rbegin() 函数返回一个指向字符串最后一个字符的逆向迭代器,而 rend() 函数返回一个指向字符串首字符前一个位置的逆向迭代器

范围for和迭代器的关系

范围for循环(Range-based for loop)和迭代器(Iterators)是 C++ 中两种不同的用于遍历容器或可迭代对象的方式。它们在语法和用法上有一些区别,但本质上都是用来迭代访问容器或序列中的元素

范围for

迭代器

容量

size

字符串长度

lengtn

max_size

字符串的最长长度

resize

capacity

字符串的容量大小

reserve

扩展字符串的容量

clear

使用 clear() 函数会将字符串对象的内容清空,即将其长度设置为 0,但并不会释放内存或缩小容量,它会将字符串对象变为空字符串,等效于给字符串赋值一个空字符串

empty

empty() 函数返回一个 bool 类型的值,如果字符串对象为空,则返回 true,否则返回 false

string类的元素访问

operator[ ]

operator[] 函数用于访问字符串中指定位置 pos 处的字符。返回一个引用,允许您读取或修改该位置上的字符。如果使用 const 修饰符,则表示对字符串进行只读访问

at

at() 函数与 operator[] 类似,也用于访问字符串中指定位置 pos 处的字符。不同之处在于,at() 函数会检查索引是否有效,如果索引超出字符串范围,则抛出 std::out_of_range 异常

front()

front() 函数用于获取字符串的第一个字符

back()

back() 函数用于获取字符串的第一个字符

string类对象的修改器(Modifiers)

operator+=

+= 运算符是字符串的连接操作符,也称为字符串的拼接运算符。使用 += 运算符,您可以将一个字符串连接到另一个字符串的末尾,从而实现字符串的拼接

basic_string& operator+=(const basic_string& str);

basic_string& operator+=(const charT* s);

basic_string& operator+=(charT ch);

append

append() 函数用于在字符串的末尾添加字符或字符序列,从而实现字符串的拼接

push_back

在字符串后面插入一个字符

insert

insert() 函数用于在指定位置插入字符或字符序列,从而改变字符串的内容

erase

erase() 函数用于从字符串中删除指定位置的字符或字符序列,从而修改字符串的内容

swap

swap() 函数没有参数,它将调用它的字符串对象与另一个字符串对象进行内容交换

直接改变指针指向

pop_back

pop_back() 函数没有参数,它只需调用它的字符串对象,就会将最后一个字符从字符串中删除

注意的是,使用 pop_back() 之前,应该确保字符串的长度不为零,否则会引发未定义的行为。在调用 pop_back() 之前,通常需要检查字符串是否为空

string类对象的操作函数(operations)

c_str

这个函数返回一个指向以 null 结尾的字符数组(C 字符串)的指针,表示当前字符串的内容

data()

这个函数返回一个指向字符数组的指针,表示当前字符串的内容。与 c_str() 类似,但 data() 不一定以 null 结尾

copy()

size_type copy(charT* dest, size_type count, size_type pos = 0) const;

这个函数从当前字符串中复制 count 个字符到指定位置 pos 开始的字符数组 dest

find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()

这些函数用于在当前字符串中搜索指定的字符或子字符串,并返回找到的第一个匹配位置或位置偏移

substr

basic_string substr(size_type pos = 0, size_type count = npos) const;

这个函数返回一个新的字符串,包含从位置 pos 开始的 count 个字符的副本

局域网

compare()

int compare(const basic_string& str) const noexcept

这个函数用于比较当前字符串与另一个 std::string 对象 str 的大小关系

string类对象的非成员函数和npos

npos

npos 是 std::string 类中的一个静态常量成员,用于表示无效或未找到的位置。它是一个特殊的 std::string::size_type 类型的常量,通常被定义为 std::string::npos,其值在不同的编译器和实现中可能不同,但通常被设为 -1 或一个非常大的值,用于表示在字符串中未找到指定的子串或字符。

npos 主要用于字符串查找操作,比如在使用 find()、rfind()、find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of() 等成员函数时,当查找失败或没有找到指定的子串或字符时,这些函数通常会返回 std::string::npos 来表示无效的位置。

注意:npos 的值是一个非常大的无符号整数,因此在比较 std::string::size_type 类型的值时,应使用无符号类型的比较方式,避免可能出现的错误。比如使用 pos != std::string::npos 来判断是否找到了指定的子串或字符

operator+(重载运算符+)

这个函数模板用于将两个 std::string 对象进行字符串连接,返回一个新的 std::string 对象,包含两个原始字符串的内容

关系运算符(Relational operators)

这些函数模板用于对 std::string 对象进行大小比较。可以通过这些运算符对两个字符串进行逐个字符的比较,从而确定它们的大小关系

getline()

这个函数模板用于从输入流中读取一行内容,并将其存储到字符串 str 中,直到遇到指定的分隔符 delim

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

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

相关文章

构造函数和初始化列表的关系和区别【详解】

构造函数和初始化列表关系和区别,以及为什么有初始化列表,和它的好处 一、构造函数和初始化列表的关系和区别二、为什么有初始化列表三、使用初始化列表的好处 一、构造函数和初始化列表的关系和区别 百度百科这样定义初始化列表:与其他函数…

基于STM32的LoRaWAN无线通信网络设计与实现

LoRaWAN (Long Range Wide Area Network) 是一种低功耗的无线通信技术,用于构建广域物联网。本篇文章将介绍基于STM32微控制器的LoRaWAN无线通信网络的设计与实现,并提供相应的代码示例。 概述 LoRaWAN的无线通信技术采用低功耗长距离传输,…

STM32 独立看门狗

目录 1.独立看门狗介绍 2.独立看门狗本质 3.独立看门狗框图​编辑 4.独立看门狗时钟 5.预分频寄存器(IWDG_PR)​编辑 6.重装载寄存器(IWDG_RLR) 7.键寄存器(IWDG_KR) 8.独立看门狗实验和代码示例 9.独立看门狗和窗口看门狗的异同点 …

【原创】java+swing+mysql个人日记管理系统设计与实现

摘要: 个人日记管理系统是一个可以记录、管理、存储和检索个人日记的应用程序。这个系统允许用户创建和管理多个日记帐户,每个帐户都可以有多个日记条目。用户可以随时添加、编辑或删除日记条目,并可以将这些条目按照主题或其他标准进行分类…

python科研绘图:绘制X-bar图

目录 1.X-bar 图的基本概念 2.X-bar 图的绘制过程 3.X-bar 图的优势 4.X-bar 图的绘制 1.X-bar 图的基本概念 X-bar控制图是一种统计工具,用于监控和控制生产过程中的质量变量。它是过程能力分析和统计过程控制(SPC,Statistical Process…

React 高级教程

目录 前言setState函数式编程HooksMy HooksuseState定义原理函数式更新reduce 方法react 源码 useEffect定义原理无限循环 useCallback定义原理 useMemo定义比较 ReduxuseReducer定义使用应用 useContext 前言 在现代前端开发中,React已经成为了一种无法忽视的技术…

Java —— 多态

目录 1. 多态的概念 2. 多态实现条件 3. 重写 重写与重载的区别 4. 向上转型和向下转型 4.1 向上转型 4.2 向下转型 5. 多态的优缺点 6. 避免在构造方法中调用重写的方法 我们从字面上看"多态"两个字, 多态就是有多种状态/形态. 比如一个人可以有多种状态, …

基于STM32的无线通信系统设计与实现

【引言】 随着物联网的迅速发展,无线通信技术逐渐成为现代通信领域的关键技术之一。STM32作为一款广受欢迎的微控制器,具有丰富的外设资源和强大的计算能力,在无线通信系统设计中具有广泛的应用。本文将介绍如何基于STM32实现一个简单的无线通…

Go ZIP压缩文件读写操作

创建zip文件 golang提供了archive/zip包来处理zip压缩文件,下面通过一个简单的示例来展示golang如何创建zip压缩文件: func createZip(filename string) {// 缓存压缩文件内容buf : new(bytes.Buffer)// 创建zipwriter : zip.NewWriter(buf)defer writ…

Oracle OCP / MySQL OCP认证容易通过吗

诸多学员在首次考OCP时,不清楚要如何选择。在本文中,我会为大家进行讲解! 选择OCP认证时需要考虑的几大项目: 授课老师师资经验 课程大纲 试听课程 考试通过率 业界口碑 服务质量 郭一军老师的OCP培训在业界培训的学员中已…

3ds Max渲染用专业显卡还是游戏显卡?

使用3dsmax建模时,会面临诸多选择,除了用vr还是cr的决策,硬件选择上也存在着疑问,比如用专业显卡还是消费级游戏显卡?一般来说,除非是特别专业的大型项目和软件,且预算在5位数以上,常…

【MySql】12- 实践篇(十)

文章目录 1. 为什么临时表可以重名?1.1 临时表的特性1.2 临时表的应用1.3 为什么临时表可以重名?1.4 临时表和主备复制 2. MySql内部临时表使用场景2.1 union 执行流程2.2 group by 执行流程2.3 group by 优化方法 -- 索引2.4 group by 优化方法 -- 直接排序 3. Me…

软件开发之路——关于架构师的一些书籍

文章目录 📋前言🎯什么是架构师🔥文末送书《高并发架构实战:从需求分析到系统设计》《中台架构与实现:基于DDD和微服务》《架构师的自我修炼:技术、架构和未来》《分布式系统架构:架构策略与难题…

第三章 栈和队列【24王道数据结构笔记】

1.栈 1.1 栈的基本概念 只允许在一端(栈顶top)进行插入或删除操作的受限的线性表。后进先出(Last In First Out)LIFO。或者说先进后出FILO。 进栈顺序:a1 > a2 > a3 > a4 > a5出栈顺序:a5 > a4 > a3 > a2 …

GB/T 1032-2023 三相异步电机试验方法 笔记

仅仅是为了技术分享。如有侵权请随时告知,我会尽快删除相关内容,谢谢! 1.阻值的温度效应 7.x 2.温升与负载电 7.x 3.力矩修正公式及功率公式 8.3 3.1铁损和铜损测量 4.空载特性曲线 9.3 4.1 空载损耗 5.堵转特性 6.剩余损耗 6.1 另一种由转子…

系列一、JVM的架构图

一、JVM的位置 JVM是运行在操作系统之上的,它与硬件没有直接的交互。 二、JVM的架构图

Leadshop开源商城小程序源码 – 支持公众号H5

Leadshop是一款出色的开源电商系统,具备轻量级、高性能的特点,并提供持续更新和迭代服务。该系统采用前后端分离架构(uniappyii2.0),以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、Vue Router、…

算法萌新闯力扣:存在重复元素II

力扣题:存在重复元素II 开篇 这道题是217.存在重复元素的升级版,难度稍微提高。通过这道题,能加强对哈希表和滑动窗口的运用。 题目链接:219.存在重复元素II 题目描述 代码思路 1.利用哈希表,来保存数组元素及其索引位置 2.遍…

STL—next_permutation函数

目录 1.next_permutation函数的定义 2.简单使用 2.1普通数组全排列 2.2结构体全排列 2.3string 3.补充 1.next_permutation函数的定义 next_permutation函数会按照字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止。与其相对的还有一个函数—…

Linux在线安装MySQL8.0.24安装、MySQL数据备份和恢复

一、 Linux在线安装MySQL8.0.24 如果机器上已经有MySQL5.7版本需要先卸载 首先,需要停止MySQL服务。可以通过以下命令来停止服务: sudo systemctl stop mysqld接下来,我们需要卸载MySQL5.7。可以通过以下命令来卸载: sudo yum…