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

【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

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装玩具租赁系统软件来发挥其高效地信息处理的作用&#xff0c…...

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候,有一个需求是限制相机倾斜角,也就是鼠标中键调整视图俯角时,不能过大,一般 pitch 角度范围在 0 至 -90之间,-90刚好为正俯视。 在网上查阅了很多资料,发现并没有一个合适的…...

Jenkins流水线初体验(六)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...