【C++初阶】第8课—标准模板库STL(string_2)
文章目录
- 1. string类对象遍历操作
- 1.1 标准库中的成员函数begin( )和end( )
- 1.2 标准库中的成员函数rbegin( )和rend( )
- 1.3 C++11引入的4个标准库中的成员函数
- 2. string类对象的访问
- 2.1 operator[ ]运算符重载访问字符串字符
- 2.2 公有成员函数at访问字符
- 2.3 公有成员函数back()和front()访问字符
- 3. string类对象的修改操作
- 3.1 运算符重载operator+=追加字符串/字符
- 3.2 push_back尾插字符c
- 3.3 append追加字符串
- 3.4 尾删字符pop_back
- 3.5 assign替换string类对象内容(全部替换)
- 3.6 replace替换string类对象内容(部分替换)
- 3.7 insert插入字符串
- 3.8 返回值npos
- 3.9 erase删除部分字符
- 3.10 swap交换函数
- 4 练习
- 4.1 练习题:反转字母
- 4.2 练习题:找字符串中第一个只出现一次的字符
- 4.3 "整数"字符串相加
1. string类对象遍历操作

1.1 标准库中的成员函数begin( )和end( )
- begin()和end()听起来就是访问字符串首尾的字符,不过end指向字符串末尾’\0’



1.2 标准库中的成员函数rbegin( )和rend( )
- rbegin()和rend()用来逆序字符串再合适不过了、


1.3 C++11引入的4个标准库中的成员函数

2. string类对象的访问

2.1 operator[ ]运算符重载访问字符串字符



2.2 公有成员函数at访问字符


- at和运算符[ ]访问字符的区别是:运算符[ ]下标如果越界,编译器直接断言报错,终止程序运行;at访问字符时,如果下标越界,那么它自动捕获异常,但它不会终止程序运行

2.3 公有成员函数back()和front()访问字符

3. string类对象的修改操作

- 常见的有
| 函数名 | 功能说明 |
|---|---|
| push_back | 在字符串后插入字符c |
| append | 在字符串后追加一个字符串 |
| operator+= | 在字符串后追加字符串str |
3.1 运算符重载operator+=追加字符串/字符

3.2 push_back尾插字符c

3.3 append追加字符串

| 分类 | 功能 |
|---|---|
| string& append (const string& str) | 追加string类对象 |
| string& append (const string& str, size_t subpos, size_t sublen) | 追加string类对象,从subpos位置开始,追加sublen个字符 |
| string& append (const char* s) | 追加常量字符串 |
| string& append (const char* s, size_t n) | 追加常量字符串,从首字符开始,追加n个 |
| string& append (size_t n, char c) | 追加n个c字符 |

3.4 尾删字符pop_back


3.5 assign替换string类对象内容(全部替换)


- assign在替换字符串时,会将原字符串所有内容全部替换为新的值
3.6 replace替换string类对象内容(部分替换)

- 对于replace,只需要熟悉上述两个常用的接口,用常量字符串和string类对象替换
- 与assign对比,assign是将原字符串整个替换掉,而replace相对比较温柔,它会让你选择要替换的字符串位置和要替换字符的个数
- 当len等于0时,replace就和insert插入的功能类似
3.7 insert插入字符串


- 关于insert的其他接口暂不赘述,可下去查文档实现,对于迭代器的接口,后面使用到会讲述
3.8 返回值npos

3.9 erase删除部分字符


- 可以看出,erase删除字符后,string类对象的size会发生变化,而capacity则不会改变
3.10 swap交换函数

4 练习
4.1 练习题:反转字母

4.2 练习题:找字符串中第一个只出现一次的字符

4.3 "整数"字符串相加

- 思路:首先找到两个"整数"字符串的尾元素下标,然后让尾元素相加,相加之后记录进位的next的值,假如8+7=13,相加之后的字符串尾元素应该为13,那么实际上尾元素应该是13%10=3,进位数next=13/10=1,然后两个尾元素下标减减,如果短的字符串结束,那让长的字符串+0即可,记录新的字符串str,用来加两个字符串相加后的尾元素
相关文章:
【C++初阶】第8课—标准模板库STL(string_2)
文章目录 1. string类对象遍历操作1.1 标准库中的成员函数begin( )和end( )1.2 标准库中的成员函数rbegin( )和rend( )1.3 C11引入的4个标准库中的成员函数 2. string类对象的访问2.1 operator[ ]运算符重载访问字符串字符2.2 公有成员函数at访问字符2.3 公有成员函数back()和f…...
【arm】程序跑飞,SWD端口不可用修复(N32G435CBL7)
项目场景: 国民N32G43X系列,烧录了一个测试程序,在DEBUG中不知什么原因挂掉,然后就无法连接SWD或JLINK。 问题描述 在SWD配置中不可见芯片型号,无法connect,无法烧录。但基本判断是芯片没有损坏。怀疑是程…...
https证书生成、linux 生成https证书、nginx 配置https证书
1. 检查 Certbot 是否已安装 which certbot 2. 安装 Certbot 2.1启用 EPEL 仓库(如果尚未启用): sudo yum install epel-release 2.2 安装 Certbot 和 Nginx 插件: sudo yum install certbot python3-certbot-nginx 2.3验证安…...
Halcon随机贴图生成缺陷图片脚本
halcon随机贴图生成缺陷图片,用于深度学习训练: read_image (Image, C:/Users/61082/Desktop/bentiiamge/omron/S06-1211/ok/ok_images/D246B_CPFNNUBA8LT0SX_AAA_S2412001793_C1216_1733895885320066.jpg) get_image_size (Image, Width, Height) gen_rectangle1 …...
[ZMQ] -- ZMQ通信Protobuf数据结构 1
1、前言背景 工作需要域间实现zmq通信,刚开始需要比较简单的数据结构,比如两个bool,后面可能就需要传输比较大的数据,所以记录下实现流程,至于为啥选择proto数据结构去做大数据传输,可能是地平线也用这个&…...
大数据平台
大数据行业应用持续升温,特别是企业级大数据市场正在进入快速发展时期。越来越多的企业期望实现数据孤岛的打通,整合海量的数据资源,挖掘并沉淀有价值的数据,进而驱动更智能的商业。随着公司数据爆发式增长,原有的数据…...
《C++解锁机器学习特征工程:构建智能数据基石》
在当今机器学习蓬勃发展的浪潮中,特征工程犹如一座坚实的基石,奠定了模型成功的基础。而 C以其卓越的性能和强大的底层控制能力,在实现机器学习特征工程方面发挥着独特且关键的作用。 特征工程的核心目标是从原始数据中提取和构建最具代表性…...
《机器学习》3.7-4.3end if 启发式 uci数据集klda方法——非线性可分的分类器
目录 uci数据集 klda方法——非线性可分的分类器 计算 步骤 1: 选择核函数 步骤 2: 计算核矩阵 步骤 4: 解广义特征值问题 と支持向量机(svm) 目标: 方法: 核技巧的应用: 区别: 使用 OvR MvM 将…...
【Linux】VMware 安装 Ubuntu18.04.2
ISO镜像安装步骤 选择语言 English 选择键盘布局 English 选择系统 Ubuntu 虚拟机网卡地址,默认即可 代理地址,默认空即可 镜像地址,修改成阿里云地址 选择第二项,LVM 磁盘扩容技术 第一块硬盘名sda,默认…...
人员离岗监测摄像机智能人员睡岗、逃岗监测 Python 语言结合 OpenCV
在安全生产领域,人员的在岗状态直接关系到生产流程的顺利进行和工作环境的安全稳定。人员离岗监测摄像机的出现,为智能人员睡岗、逃岗监测提供了高效精准的解决方案,而其中的核心技术如AI识别睡岗脱岗以及相关的算法盒子和常见的安全生产AI算…...
【Spark】Spark数据倾斜解决方案、大表join小表及大表join大表优化思路
如果觉得这篇文章对您有帮助,别忘了点赞、分享或关注哦!您的一点小小支持,不仅能帮助更多人找到有价值的内容,还能鼓励我持续分享更多精彩的技术文章。感谢您的支持,让我们一起在技术的世界中不断进步! Sp…...
探索 Cesium 的未来:3D Tiles Next 标准解析
探索 Cesium 的未来:3D Tiles Next 标准解析 随着地理信息系统(GIS)和 3D 空间数据的快速发展,Cesium 作为领先的开源 3D 地球可视化平台,已成为展示大规模三维数据和进行实时渲染的强大工具。近年来,随着…...
每日一站技術架構解析之-cc手機桌布網
# 網站技術架構解析: ## 一、整體架構概述https://tw.ccwallpaper.com是一個提供手機壁紙、桌布免費下載的網站,其技術架構設計旨在實現高效的圖片資源管理與用戶訪問體驗優化。 ### (一)前端展示 1. **HTML/CSS/JavaScript基礎構…...
prometheus监控之黑盒(blackbox)监控
1.简单介绍 blackbox-exporter项目地址:https://github.com/prometheus/blackbox_exporter blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,blackbox-exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Promethe…...
计算机网络之传输层协议TCP
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之传输层协议TCP 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目…...
子查询与嵌套查询
title: 子查询与嵌套查询 date: 2024/12/13 updated: 2024/12/13 author: cmdragon excerpt: 子查询和嵌套查询是关系型数据库中强大的查询工具,允许用户在一个查询的结果中再进行查询。通过使用子查询,用户能够简化复杂的SQL语句,增强查询的灵活性和可读性。本节将探讨子…...
GPT-SoVITS语音合成模型部署及使用
1、概述 GPT-SoVITS是一款开源的语音合成模型,结合了深度学习和声学技术,能够实现高质量的语音生成。其独特之处在于支持使用参考音频进行零样本语音合成,即使没有直接的训练数据,模型仍能生成相似风格的语音。用户可以通过微调模…...
springboot423玩具租赁系统boot(论文+源码)_kaic
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装玩具租赁系统软件来发挥其高效地信息处理的作用,…...
【收藏】Cesium 限制相机倾斜角(pitch)滑动范围
1.效果 2.思路 在项目开发的时候,有一个需求是限制相机倾斜角,也就是鼠标中键调整视图俯角时,不能过大,一般 pitch 角度范围在 0 至 -90之间,-90刚好为正俯视。 在网上查阅了很多资料,发现并没有一个合适的…...
Jenkins流水线初体验(六)
DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
