string的基本概念及常用接口

string的基本概念

本质:

string时C++风格的字符串,而string本质上是一个类。

string和char*的区别:

char*是一个字符指针。而string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。

特点:

1、string类内部封装了很多的成员方法

eg:查找find、拷贝copy、删除delete、替换replace、插入insert

2、string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。

string构造函数

string构造函数作用:对字符串进行初始化

初始化的方式有4种

原型分别为:

1、string();//无参构造--创建一个空的字符串。eg:string str;

2、string(const char* s);//有参构造---初始化字符串

3、string(const string &str);//拷贝构造---使用一个string对象初始化另一个string对象

4、string(int n,char c);//使用n个字符c进行初始化

eg:

 string的赋值操作

给string赋值有7种方法

原型分别为:

1、string& operator=(const char* s);//char*类型字符串赋值给当前的字符串

2、string& operator=(const string &s);//将字符串s赋给当前的字符串(类似于拷贝构造)

3、string& operator=(char c);//将字符c赋值给当前的字符串

4、string& assign(const char*s);//把字符串s赋给当前字符串

5、string& assign(const char* s,int n);//把字符数组s中的前n个字符赋给当前字符串

6、string& assign(const string &s);//把字符串s赋给当前字符串

7、string& assign(int n,char c);//将n个字符c赋给当前字符串

eg:

 string字符串拼接

作用:实现在字符串末尾拼接字符串

拼接字符串有两大方法,一种是用重载后的+=,另一种是用string提供的成员函数append来实现。

字符串拼接函数原型:

eg:

string查找和替换

查找:查找指定位置的字符串是否存在

替换:在指定的位置替换字符串

常用的查找和替换函数

函数原型:

int find(const string &str,int pos=0)const;//从pos开始(默认从0开始),查找str第一次出现的位置

int find(const char c,int pos=0)const;//从pos开始,查找字符c第一次出现的位置

int rfind(const string &str,int pos=npos)const;//从str最后一个位置从右向左查找str第一次出现的位置

int rfind(const char c,int pos=0)const;//查找字符c最后一次出现的位置

string& replace(int pos,int n,const string &str);//用str替换从pos开始的n个字符

eg:

 string字符串比较

比较方式:

字符串比较是按字符的ASCII码进行对比的

若两个字符串相等,则返回0

若大于,则返回1

若小于,则返回-1

string用于比较的内置函数为compare

eg:

 string字符存取

string中单个字符的存取方式有两种:(可读可写)

一种是用[]进行访问,另一种是用at进行访问。

eg:

 string插入与删除

string插入用insert,删除用erase

eg:

string子串

 求string子串的函数名为substr

函数原型:

string substr(int pos=0,int n=npos)const;//返回由pos开始的n个字符组成的字符串

具体应用实例:

 

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

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

相关文章

【C++】类和对象(一)

前言:在前面我们带大家初步步入了C,让大家大概知道了他的样子,那今天就可以说我们要正式步入C的大门了,这一章内容的细节比较多各位学习的时候一定要仔细。 💖 博主CSDN主页:卫卫卫的个人主页 💞 &#x1f…

【amis低代码前端框架】vue2集成百度低代码前端框架amis

什么是amis:amis 是一个低代码前端框架,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率。 第一步:下载amis 命令行内执行以下命令下载安装amis npm i amis第二步:下载完毕amis后 将nod…

Habitat环境学习一:导航任务概述

导航任务 概述: Agent需要导航到环境中的指定位置,而该位置可以由特定的目标形式指定。 PointGoal Navigation:导航到环境中相对于初始位置特定的点; Object Navigation:Agent需要在环境中找到特定的物体&#xff1…

快递堆成山怎么办?快递管理系统来啦~

大型企业中每天都有数不清的快递往来,一线行政、财务、采购和后勤人员经常就快递问题大倒苦水: 员工寄件收件用花名、昵称,人员和快递很难对应; 前台一个个手动通知员工取件,还是会错拿忘拿; 员工私件公寄、…

[Grafana]ES数据源Alert告警发送

简单的记录一下使用es作为数据源,如何在发送告警是带上相关字段 目录 前言 一、邮件配置 二、配置 1.Query 2.Alerts 总结 前言 ES作为数据源,算是Grafana中比较常见的,Alerts告警是我近期刚接触,有一个需求是当表空间大于…

【Linux操作系统】:Linux开发工具编辑器vim

目录 Linux 软件包管理器 yum 什么是软件包 注意事项 查看软件包 如何安装软件 如何卸载软件 Linux 开发工具 Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 插入模式 插入模式切换为命令模式 移动光标 删除文字 复制 替换 撤销 跳至指…

方法、数组

方法 是语句的集合,在一起执行一个功能 它是解决一类问题的步骤的有序集合 包含于类或对象中 在程序中创建,在其他地方被引用 设计方法的原则:方法的本意是功能块,就是实现某一个功能的语句块的集合。设计时,最好保持…

Sketch 99.5中文 优秀的网站和移动应用设计软件

Sketch for mac用于数字世界的图形设计。在一个屡获殊荣的软件包中提供强大的工具和优雅的界面。因为做美丽的事情应该是一种快乐,而不是负担。 软件下载:Sketch 99.5中文激活版下载 Sketch支持每层多个填充,边框和阴影;具有强大的…

Codeforces Round 799 (Div. 4)

目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…

7.【SpringBoot3】项目部署、属性配置、多环境开发

文章目录 1. SpringBoot 项目部署2. 属性配置方式2.1 通过 cmd 命令行配置2.2 通过环境变量配置2.3 通过外部配置文件来配置 3. 多环境开发 Profiles3.1 多环境开发的单文件配置3.2 多环境开发的多文件配置3.3 多环境开发-分组 1. SpringBoot 项目部署 项目完成后&#xff0c;…

Doris简介及单机部署(超详细)

文章目录 一、Doris简介1、Doris介绍2、Doris架构 二、Doris单机部署&#xff08;Centos7.9&#xff09;1、下载Doris2、准备环境3、安装部署3.1 创建存储目录3.2 配置 FE3.3 启动 FE3.4 查看 FE 运行状态3.5 配置 BE3.6 启动 BE3.7 添加 BE 节点到集群3.8 查看 BE 运行状态3.9…

为什么现在年轻人宁愿自己工资低点也要过得舒服,不那么累?

​为什么现在的年轻人宁愿工资低点也要过得舒服&#xff1f; 在当今社会&#xff0c;我们不难发现一种现象&#xff1a;越来越多的年轻人宁愿选择工资稍低&#xff0c;但相对轻松的工作&#xff0c;而不是追求高收入和高压力的职位。这似乎与传统的观念相悖&#xff0c;因为在…

maven中的version加不加SNAPSHOT的区别

我们平时开发时经常看到maven的pom.xml文件里面的包有两种 因为maven的远程仓库一般分为public(Release)和SNAPSHOT&#xff0c;前者代表正式版本&#xff0c;后者代表快照版本。 具体有什么区别呢&#xff1a; 举例说明&#xff0c;你开发了一个基础功能&#xff0c;打包发布…

记录我的历程

1、2024年1月30号更新 从2024年1月22号开始复更&#xff0c;已添加20篇文章&#xff0c; 前一阶段&#xff1a;排名1502450、原力分2、粉丝3人

electron-builder vue 打包后element-ui字体图标不显示问题

当使用electron打包完成的时候&#xff0c;启动项目发现使用的element-ui字体图标没显示都变成了小方块&#xff0c;并出现报错&#xff0c;请看下图&#xff1a; 解决方法&#xff1a; 在vue.config.js中设置 customFileProtocol字段&#xff1a;pluginOptions: {electronBui…

港大、TikTok推出任意图像的深度估计大模型Depth Anything,致敬Segment Anything

目录 前言 1.摘要 2.方法 3.实验结果 4.总结 前言 人类有两只眼睛来估计视觉环境的深度信息&#xff0c;但机器人和 VR 头社等设备却往往没有这样的「配置」&#xff0c;往往只能靠单个摄像头或单张图像来估计深度。这个任务也被称为单目深度估计&#x…

CXYGZL-程序员工作流:自定义流程打印模板,新增审批人类型

概述 我们的工作流引擎采用了低代码方式&#xff0c;借鉴了钉钉和飞书的设计思路&#xff0c;旨在降低用户的使用门槛。相比基于BPMN.js的工作流引擎&#xff0c;我们的解决方案更容易上手&#xff0c;一般用户也能在几分钟内搭建自己的工作流程。这样&#xff0c;非专业人员也…

vue中的vuex

在Windows的应用程序开发中&#xff0c;我们习惯了变量&#xff08;对象&#xff09;声明和使用方式&#xff0c;就是有全局和局部之分&#xff0c;定义好了全局变量&#xff08;对象&#xff09;以后在其他窗体中就可以使用&#xff0c;但是窗体之间的变量&#xff08;对象&am…

神经调节的Hebbian学习用于完全测试时自适应

摘要 完全测试时自适应&#xff08;Fully test-time adaptation&#xff09;是指在推理阶段对输入样本进行序列分析&#xff0c;从而对网络模型进行自适应&#xff0c;以解决深度神经网络的跨域性能退化问题。我们从生物学合理性学习中获得灵感&#xff0c;其中神经元反应是基…

开发通用模板设计

文章目录 需求摘要1 模板描述2 模板内容介绍2.1 模块间依赖关系2.2 模板目前集成2.2.1 swaggerKnife4j2.2.1 nacosSpringBootSpringCloudAlibaba 3 项目地址4 FAQ 需求 目前在开发中&#xff0c;使用的非本人搭建的项目架子&#xff0c;存在如下问题&#xff1a; 依赖无法统一…