C++string类的介绍及常用函数用法总结

 

 

🎉个人名片:

🐼作者简介:一名乐于分享在学习道路上收获的大二在校生
🐻‍❄个人主页🎉:GOTXX
🐼个人WeChat:ILXOXVJE

🐼本文由GOTXX原创,首发CSDN🎉🎉🎉
🕊系列专栏:零基础学习C语言----- 数据结构的学习之路
🐓每日一句:如果没有特别幸运,那就请特别努力!🎉🎉🎉
————————————————

 

🎉文章简介:

🎉本篇文章对   C++string类的介绍及常用函数用法总结 学习的相关知识进行分享!🎉

如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作动力的源泉,让我们一起加油,一起奔跑,让我们顶峰相见!!!🎉🎉🎉

目录

一.strng类的介绍

二.string类常用函数及用法

1.string类对象常见的构造

2.string类对象的容量操作

3. string类对象的访问及遍历操作  

4.string类对象的修改操作


 

一.strng类的介绍

 

简单的说:

string是表示字符串的字符串类,类里面提供了许多对字符串操作的函数;

string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits,
allocator> string;

 

其中, 注意: 在使用string类时,必须包含#include头文件以及using namespace std;

二.string类常用函数及用法

1.string类对象常见的构造

(1)  string()

功能:构造一个长度(大小)为0的空字符串;

【例子】

(2)string(const char* s)

功能:构造一个用字符串s初始化的字符串

【例子】

(3)string(const string& str)

功能:用字符串str拷贝构造一个字符串

【例子】

(4)string(size_t  n,char c)

功能:构造一个用n个字符c初始化的字符串

【例子】

2.string类对象的容量操作

(1)size ( )

功能:返回字符串有效字符长度

【例子】

(2)length( )

功能:和size一样,返回字符串有效字符的长度

【例子】

(3)capicity( )

功能:返回字符串总空间的大小        注意:编译器不同得出得值不同;

【例子】

(4)empty( )

功能:检测字符串是否为空

【例子】

 

(5)clear( )

功能:清空字符串中得有效字符清空,但不会影响

注意:clear只是将有效字符清空,但不会影响底层总空间的大小

【例子】

(6)reserve  (size_t n)

功能:为string预留空间,不改变有效元素个数(如下例一),当reserve的参数小于string的底层空间总大小时,reserver不会改变容量大小(如下例二),只影响容量,不影响数据 ;     

注意:当使用reverse要扩容到某个值时,实际中编译器不一定会扩容到指定值,可能会多扩容点,不同的编译器结果不同;

【例一】

【例二】

(7)    void resize (size_t n)

             void resize (size_t n, char c)

功能:将字符串有效长度改为N个,不同的是当字符个数增多时:resize(n) 用  /0 来填充多出的元素空间(如下例一),resize(size_t n, char c)用字符 来填充多出的元素空间(如下例二);

注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变;

【例一】

【例二】

3. string类对象的访问及遍历操作  

下标遍历

(1)operator[] 

          char& operator[] (size_t pos);                   //可读可改          例一

const char& operator[] (size_t pos) const;          //只读不能改       例二

功能:类似于数组下标访问

其中:下标+[ ]只适用于部分容器,底层物理空间具有一定连续性的链式结构;

例一:

【例二】

 迭代器遍历       正向迭代器(iterator)

(2)begin()    返回指向第一个字符的迭代器 

      iterator begin();             //可读可写
const_iterator begin() const;       //只读不能写    【如例二】

         end()       返回指向最后一个字符下一个字符的迭代器

      iterator end();
const_iterator end() const;

注意:迭代器适用于所以容器,迭代器才是容器遍历的主流形式;

【例一】

【例二】

迭代器倒序遍历     反向迭代器(severse_itreator)

(3)rbegin()    返回指向字符串最后一个字符(即其反向开头)的反向迭代器

         rend ()      返回指向字符串第一个字符(即其反向结尾)的反向迭代器

【例子】

注意匹配使用:

const_iterator  it   本质保护迭代器指向的内容不能修改;
const iterator it    是迭代器本身不能被修改;
在使用迭代器遍历时,迭代器本身是要修改的 ;

(3) 范围for遍历

【例子】

4.string类对象的修改操作

(1)push_back(char c)

功能:在字符串后面尾插一个字符c

【例子】

(2)pop_back()

功能:尾删一个字符

【例子】

 

(3)append

功能:在字符串后面追加一个字符串

【例子】

运行结果:

(4)operator+=

功能:在后面追加字符串str,追加一个字符,追加string对象

【例子】

 

(5)find+npos

功能:从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置,如果没有找到,就返回npos,注意:npos是string类域里面的,使用时需要指定类域【例二】;
如果后面不加起始寻找的位置坐标,则默认是从0开始;
【例一】

【例二】

(6)rfind

功能:从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

其中,每个使用方法和find一样,只是是从后往前找

【例子】

(7)substr()

功能:在str中从pos位置开始,截取len个字符,然后将其返回,当不传入len参数时,默认全部截取

【例子】

 

(8) c_str

功能:返回C格式字符串
【例子】
(9)erase
功能:从pos位置开始,删除len个字符;
【例子】

 

(10)insert()

功能:在pos位置插入字符或字符串

【例子】

 

 



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

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

相关文章

更改ERPNEXT源

更改ERPNEXT源 一&#xff0c; 更改源 针对已经安装了erpnext的&#xff0c;需要更改源的情况&#xff1a; 1, 更改为官方默认源, 进入frapp-bench的目录&#xff0c; 然后执行: bench remote-reset-url frappe //重设frappe的源为官方github地址。 bench remote-reset-url…

如何配置 VS Code 实现 git 密码免输入

目录 问题描述尝试过的失败方法问题分析最终采用的解决方案&#xff1a;利用 ssh key 提供密码免输入功能安装 git windows 命令工具在windows本地生成 ssh key将公钥安装到 git 服务器第一种方法第二种方法调试方法 参考资料: 问题描述 在 Windows 上&#xff0c;使用 Visual…

AI股票崩盘预测模型(企业建模_论文科研)ML model for stock crash prediction

对齐颗粒度&#xff0c;打通股票崩盘底层逻辑&#xff0c;形成一套组合拳&#xff0c;形成信用评级机制良性生态圈&#xff0c;重振股市信心&#xff01;--中国股市新展望&#xff01;By Toby&#xff01;2024.1.3 综合介绍 股票崩盘&#xff0c;是指证券市场上由于某种原因&a…

玩机技巧|拿到新电脑or电脑重装系统后该如何设置

1、关闭权限申请 你是否碰到过&#xff0c;在打开一个应用时&#xff0c;电脑总会询问”你要允许此应用对你的设备进行更改吗&#xff1f;"&#xff0c;这个或许很烦&#xff0c;下面我们就讲这个关闭&#xff0c;告别不断地请求。&#xff08;此处你点击是&#xff0c;便…

ssm基于JSP的明水县苹果网吧计费管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本明水县苹果网吧计费管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大…

包含所有字符的最短字符串

由题还是很容易想到可以用一个哈希表来统计字符串中每个字符出现的次数。首先扫描字符串t&#xff0c;每扫到一个&#xff0c;哈希表中对应值加1。然后扫描字符串s&#xff0c;每扫描一个就检查哈希表中是否包含该字符&#xff0c;没有则忽略不计。如果存在&#xff0c;对应的值…

【数据结构】八大排序之快速排序算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.快速排序简介及思路 二.快速排序代码实现的三种方式 &#x1f4cc;左右交换法 &#x1f4cc;挖坑填坑法 &#x1f4cc;前后指针法 三.快速排序的时间复杂度分析…

ssm基于HTML5的交流论坛的设计与实现+vue论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

【Java EE初阶九】多线程进阶一(锁策略)

前言 锁的策略&#xff1a;加锁过程中&#xff0c;即处理冲突的过程中&#xff0c;需要涉及到的一些不同的处理方式&#xff08;此处锁策略并不是java独有的&#xff09;&#xff0c;本篇内容主要是讲解一下关于锁的相关知识点&#xff1b; 1. 关于锁的分组 1.1 第一组&#x…

动态内存管理:malloc free

//——————1.动态内存管理&#xff08;内存空间&#xff09; 共四个函数&#xff1a;malloc free calloc realloc 1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] { 0 };//在栈空间上开…

一、Qt介绍

一、Qt介绍 1、介绍 Qt是一套程序开发库&#xff0c;但是与MFC&#xff08;依赖于Windows API&#xff09;不同&#xff0c;Qt是跨平台开发库。 Qt获取&#xff1a;[Qt下载地址](https://download.qt.io/archive/qt/)2、Qt安装 QtMinGWSourcesQt ChartsQt Data Visualizatio…

如何在Android Glide中结合使用CenterCrop和自定义圆角变换(图片部分圆角矩形)

如何在Android Glide中结合使用CenterCrop和自定义圆角变换&#xff08;图片部分圆角矩形&#xff09; 在Android开发中&#xff0c;使用Glide加载图片时&#xff0c;我们经常需要对图片进行特定的处理&#xff0c;比如裁剪和圆角变换&#xff0c;特别是一些设计稿&#xff0c;…

cpufreq子系统

cpufreq是linux上负责实现动态调频的关键&#xff0c;这篇笔记总结了linux内核cpufreq子系统的关键实现&#xff08;Linux 3.18.140&#xff09;。 概述 借用一张网络上的图片来看cpufreq子系统的整体结构&#xff1a; 用户态接口&#xff1a;cpufreq通过sysfs向用户态暴露接…

Java知识点:泛型、类加载器、内部类、可变参数

文章目录 1、this关键字2、泛型2.1 泛型介绍2.2 泛型分类定义2.2.1 泛型类2.2.2 泛型方法2.2.3 泛型接口 2.3 泛型通配符 3、可变参数4、日志4.1 使用步骤4.2 日志级别4.3 配置文件 5、类加载器5.1 类加载器5.2 类加载的完整过程5.2.1 类加载时机5.2.2 类加载过程 5.3 类加载的…

【开源项目】超经典开源项目实景三维数字孪生智慧工厂

数字孪生工厂&#xff0c;以模型驱动的自动化&#xff0c;与数据驱动的人工智能技术紧密融合与协同&#xff0c;实现机器、工件与组件间全面的和点对点的数据通信。飞渡科技基于自研DTS平台&#xff0c;将物联网IOT、人工智能、大数据、云计算等技术应用于工厂&#xff0c;实现…

期货日数据维护与使用_日数据维护_模块运行演示

写在前面&#xff1a; 本文默认已经创建了项目&#xff0c;如果不知道如何创建一个空项目的&#xff0c;请参看以下两篇博文 PyQt5将项目搬到一个新的虚拟环境中 https://blog.csdn.net/m0_37967652/article/details/122625280 python_PyQt5开发工具结构基础 https://blog.cs…

TMC4671闭环调试步进、伺服、音圈、永磁、无刷电机

一、IDE 连接开发板 下 面 讲 解 IDE 和 开 发 板 连 接 的 详 细 操 作 。 这 里 我 们 选 择 用 主 控 板 TMC671-EVALTMC6200-EVAL 开发板做讲解。其它型号的开发板也是大同小异 的操作步骤。 1&#xff0e;首先我连接好开发板&#xff0c;并给开发板上电 连接好的开发板如下…

【激活函数】SELU 激活函数

1、介绍 SELU (Scaled Exponential Linear Unit) SELU是对ELU激活函数的改进&#xff0c;通过引入自动标准化机制&#xff0c;使得神经网络的隐藏层在训练过程中可以自动地保持输出的均值和方差接近于1。 # 定义 SELU 激活函数 def selu(x, alpha1.67326, lambda_1.0507):retu…

【Python百宝箱】数据清洗艺术:Python库助力打磨完美数据

数据清洗与预处理&#xff1a;Python库大揭秘 前言 在数据科学领域&#xff0c;数据清洗和预处理是构建可靠模型的关键步骤。本文深入探讨了一系列强大的Python库&#xff0c;它们在处理重复数据、字符串匹配、数据整理以及降维等方面发挥着重要作用。通过学习这些库&#xf…

单片机相关知识点

在STM32上运行FreeRTOS&#xff0c;十分简练的小文章FreeRTOS&#xff08;STM32CubeMX&#xff09;_cubemx freertos-CSDN博客 STM32CubeMX转Keil使用STM32CubeMX生成Keil工程并完成流水灯-CSDN博客