C++ : string类

 

目录

介绍:

string类的七种构造函数: 

string类的第三个构造函数 

string类的第四个构造函数 

string类的第五个构造函数 

string类的第六个构造函数 

string类常用的构造

string类对象的访问遍历操作

 第一种遍历方式:

第二种遍历方式:迭代器遍历

 第三种遍历方式:范围for循环遍历


介绍:

  1. string是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string string,所以string 在底层的本质上也是一个模板
  4. 不能操作多字节或者变长字符的序列。
  5. 在使用string类时,必须包含#include头文件以及using namespace std;

 相关内容详细介绍:cplusplus.com/reference/string/string/?kw=string

 

string类的七种构造函数: 

关于string的构造函数一共分为七种,其中第一种和第二种分别是默认构造和拷贝构造。 

string类的第三个构造函数 

string(const string& str,size_t pos,size_t len = npos);

string的第三个构造的意思是: 这个构造函数的作用是创建一个新的 string 对象,其中包含了从指定位置开始的一部分字符。这样可以方便地从一个较长的字符串中提取需要的子字符串。  

换句话说,便是从pos位置开始提取len个字符 ,在str接收的字符串上

  • str:要从中提取子字符串的源字符串。
  • pos:指定要开始提取子字符串的位置。
  • len:可选参数,指定要提取的子字符串的长度。默认值为 npos,表示提取从 pos 开始到源字符串的末尾的所有字符。

string类的第四个构造函数 

string(const char* s)

这个是接收一个char类型的字符串作为参数,也就是说将一个字符串赋予给string的对象 

const char* cstr = "Hello, C++";
string str(cstr);  // 使用构造函数将字符串赋值给string的对象str

cout << str << endl;  // 输出:Hello, C++

string类的第五个构造函数 

string (const char * s , size_t  n);

获取const char *s指向的字符串,size_t n 是指要获取这个字符串的字符个数 

const char* cstr = "Hello, World!"; 
size_t n = 5; 
std::string str(cstr, n); // 使用C风格字符串的前n个字符初始化std::string对象
  • 在这个例子中,cstr 指向字符串 "Hello, World!"。
  • 由于 n 被设置为5,std::string str(cstr, n); 会创建一个 std::string 对象 str并只包含 "Hello" 这5个字符,不包含后面的逗号和空格以及终止空字符。

string类的第六个构造函数 

string(size_t n,char c);

string类的第六个构造函数本质上其实是一种初始化方式

string类常用的构造

string类对象的访问遍历操作

 第一种遍历方式:

因为string是内置编码,所以不能使用指针进行提取,但是可以使用size进行提取string修饰的变量的字符串有效长度,同时记住size不获取\0

 关于size详解:cplusplus.com/reference/string/string/size/

也就说获取字符串有多少个字符,同时使用运算符重载 operator[]来获取字符串第i个字符 

 

例子中的s1[i]相当于s1.operator[](i)

关于operator [] 详解:cplusplus.com/reference/string/string/operator%5B%5D/ 

 而由于operator []的本质是返回当前位置的字符,所以可以利用它的特性对字符串中的字符进行++或者--等相关的加减操作

第二种遍历方式:迭代器遍历

迭代器是一个类型,是定义在string内部的,所以需要指定类域

迭代器的行为像指针一样的类型对象,begin是返回第一个有效位置的迭代器,end是返回最后一个有效数据的下一个位置,这里的最后一个有效数据的下一个字符是\0,相当于指针的移动,从当前位置移动到\0位置结束

同时使用迭代器也可以进行字符串中的字符修改操作 

迭代器的好处,是屏蔽了底层的细节,是谁都可以使用迭代器进行遍历,迭代器其是是一个通用的遍历方式

 第三种遍历方式:范围for循环遍历

 范围for的底层其实就是迭代器,和迭代器遍历在底层看其实是一样的没有差异的!


 

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

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

相关文章

使用Node.js开发RESTful API

在当今信息时代&#xff0c;不管是企业级应用还是个人项目&#xff0c;都离不开RESTful API的使用。RESTful API 是现代 web 应用的基石&#xff0c;通过它&#xff0c;我们可以实现前后端的高效沟通和数据传输。而在开发 RESTful API 的过程中&#xff0c;Node.js 的强大功能和…

AR应用的开发流程

增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;是一种技术&#xff0c;它将虚拟信息叠加在真实世界中&#xff0c;通过计算机生成的视觉、听觉、触觉等感官反馈&#xff0c;将虚拟元素与现实世界进行交互。这种技术使得用户可以与现实世界中的虚拟对象进行互…

vue插件——vue-print-nb 实现打印功能

之前写过好多关于打印的功能&#xff0c;通过windowprint组合键来实现打印。 今天遇到一个需求&#xff0c;就是使用vue插件来实现打印功能。 最终效果图如下&#xff1a; 下面介绍解决步骤&#xff1a; 解决步骤1&#xff1a;安装vue-print-nb插件——npm install vue-p…

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件 最近看到了一个插件&#xff0c;实现一个可滑动关闭组件。滑动关闭组件即手指向下滑动&#xff0c;组件随手指移动&#xff0c;当移动一定位置时候&#xff0c;手指抬起后组件滑出屏幕。 一、GestureDetect…

配置多个后端 API 代理

在开发 React 应用时&#xff0c;通常会涉及到与后端 API 的交互。而在开发过程中&#xff0c;我们经常需要在开发环境中使用代理来解决跨域请求的问题。Create React App 提供了一种简单的方式来配置代理&#xff0c;即通过创建一个名为 setupProxy.js 的文件来配置代理规则。…

力扣链表篇

以下刷题思路来自代码随想录以及官方题解 文章目录 203.移除链表元素707.设计链表206.反转链表24.两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 203.移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链…

一个具有强大PDF处理能力的.Net开源项目

PDF具有跨平台、可读性强、不可修改性、无需特定阅读软件、内容安全等好处&#xff0c;在工作中经常都会用到。 所以&#xff0c;我们在项目开发中&#xff0c;经常需要生成PDF的文件&#xff0c;或者把Html、Xml等文件转化为PDF格式。 今天给大家推荐一个具有PDF处理能力的.…

计算机设计大赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

vue - - - - Vue3+i18n多语言动态国际化设置

Vue3i18n多语言动态国际化设置 前言一、 i18n 介绍二、插件安装三、i18n配置3.1 创建i18n对应文件夹/文件3.2 en-US.js3.3 zh-CN.js3.4 index.js 四、 mian.js 引入 i18n配置文件五、 组件内使用六、使用效果 前言 继续【如何给自己的网站添加中英文切换】一文之后&#xff0c…

Folx Pro Mac中文p破解版如何使用?为您带来Folx Pro 详细使用教程!

​ Folx pro 5 中文版是mac上一款功能强大的老牌加速下载软件&#xff0c;新版本的Folx pro整体界面非常的简洁和漂亮&#xff0c;具有非常好用的分类管理功能&#xff0c;支持高速下载、定时下载、速度控制、iTunes集成等功能。Folx pro兼容主流的浏览器&#xff0c;不但可以下…

AI对话系统app开源

支持对接gpt&#xff0c;阿里云&#xff0c;腾讯云 具体看截图 后端环境&#xff1a;PHP7.4MySQL5.6 软件&#xff1a;uniapp 废话不多说直接上抗揍云链接&#xff1a; https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码

【postgresql】数据表id自增与python sqlachemy结合实例

需求&#xff1a; postgresql实现一个建表语句&#xff0c;表名&#xff1a;student,字段id,name,age&#xff0c; 要求&#xff1a;每次添加一个数据id会自动增加1 在PostgreSQL中&#xff0c;您可以使用SERIAL或BIGSERIAL数据类型来自动生成主键ID。以下是一个创建名为stude…

Jmeter系列(1)Mac下载安装启动

目录 Jmeter下载安装启动下载启动 Jmeter下载安装启动 注意⚠️&#xff1a;使用jmeter需要有java环境 下载 官网下载地址&#xff1a;https://jmeter.apache.org/ 会看到这里有两个版本&#xff0c;那么有什么区别么&#xff1f; Binaries是可执行版&#xff0c;直接下载解…

韩国量子之梦:将量子计算纳入新增长 4.0战略

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨沛贤 深度好文&#xff1a;1500字丨9分钟阅读 据《朝鲜邮报》报道&#xff0c;韩国将推出由量子计算加速的云服务&#xff0c;并在首尔地区启动城市空中交通的试飞&…

企业过二级等保采购哪家堡垒机好?

企业常见过等保&#xff0c;一般是指等保二级或者三级。这不2024开年&#xff0c;不少企业在问&#xff0c;过二级等保采购哪家堡垒机好&#xff1f;电话多少&#xff1f;这里我们小编就给大家毛遂自荐一下吧&#xff01; 企业过二级等保采购哪家堡垒机好&#xff1f; 【回答】…

Spring Boot Profiles简单介绍

Spring Boot application.properties和application.yml文件的配置 阅读本文之前&#xff0c;请先阅读上面的配置文件介绍。 Spring Boot Profiles是一个用于区分不同环境下配置的强大功能。以下是如何在Spring Boot应用程序中使用Profiles的详细步骤和代码示例。 1. 创…

一周学会Django5 Python Web开发-Django5命名空间namespace

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

2024年2月20日v1.0.5更新·优雅草便民工具youyacao-tools

2024年2月20日v1.0.5更新优雅草便民工具youyacao-tools apk下载 https://fenfacun.youyacao.com/tools105.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具&#xff0c;2024年1月17日正式发布v1.0.0版本&#xff0c;本工具为了方便大众免…

Linux-部署各类软件(黑马学习笔记)

MYSQL MYSQL5.7版本在CentOS系统安装 注意&#xff1a;安装操作需要root权限 MySQL的安装我们可以通过前面学习的yum命令进行。 安装 1.配置yum仓库 # 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安装Mysql yum库 rpm -Uvh http://repo.mysql.…

运维管理制度优化:确保IT系统稳定运行的关键策略

1、总则 第一条&#xff1a;为保障公司信息系统软硬件设备的良好运行&#xff0c;使员工的运维工作制度化、流程化、规范化&#xff0c;特制订本制度。 第二条&#xff1a;运维工作总体目标&#xff1a;立足根本促发展&#xff0c;开拓运维新局面。在企业发展壮大时期&#x…