【算法与数据结构】【字符串篇】【String的常见函数】

系列文章

本人系列文章-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/handsomethefirst/article/details/138226266?spm=1001.2014.3001.5502


1.string基本概念

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

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

2.构造函数

函数说明
string()创建一个空的字符串 例如: string str;
string(const char* s)使用c风格的字符串s初始化
string(const string& str)使用一个string对象初始化另一个string对象
string(int n, char c)使用n个字符c初始化

3.插入函数

函数说明
push_back()尾部插入一个字符。例如:s.push_back(‘p’);
insert(int pos, const string& str);在pos的位置插入字符串
insert(int pos, int n, char c);在poc的指定位置插入n个字符c

4.遍历函数

方法说明
下标运算符访问如:s[1]
正向迭代器如:string::iterator it=s.begin();it!=s.end();it++;
反向迭代器如:string::reverse_iterator it=s.rebegin();it!=s.rend();it++;

5.删除函数

方法说明
string& erase(int pos, int n )删除从Pos开始的n个字符
erase(string::iterator it);s.erase(s.begin()),删除指定位置的字符

6.查找函数

find查找是从左往后,rfind从右往左

find找到字符串后返回查找的第一个字符位置,找不到返回-1

方法说明
int find(const string& str, int pos = 0) const

查找str第一次出现位置,从pos开始查找

int pos = str1.find("de");

int find(const char c, int pos = 0) const;查找字符c第一次出现位置
int rfind(const string& str, int pos = npos) const;查找str最后一次位置,从pos开始查找
int rfind(const char c, int pos = 0) const;查找字符c最后一次出现位置
size_type find_first_not_of(const string &str,size_type index =0 )const;

返回在字符串中首次出现的不匹配str中的任何一个字符的首字符索引, 从index开始搜索, 如果全部匹配则返回string::npos()。

string a("abcdefg");

cout<< a.find_first_not_of("abcdef")<< endl;//值为6

size_type find_first_not_of(const Char* str,size_type index,size_type num )const;

从index开始起搜索当前字符串, 查找其中与str前num个字符中的任意一个都不匹配的序列, 返回满足条件的第一个字符索引, 否则返回string::npos。

string a("abcdefg");

cout << a.find_first_not_of("abceef", 0, 4) << endl;//值为3

7.替换函数

方法说明
string& replace(int pos, int n, const string& str)替换从pos开始n个字符为字符串str
string& replace(int pos, int n,const char* s);替换从pos开始的n个字符为字符串s

8.赋值函数

方法说明
string& operator=(const string &s);把字符串s赋给当前的字符串
string& assign(const char *s, int n);把字符串s的前n个字符赋给当前的字符串
string& assign(const string &s);把字符串s赋给当前字符串
string& assign(int n, char c);用n个字符c赋给当前字符串

 9.拼接函数

方法说明
string& operator+=(const string& str);在字符串末尾拼接字符串
string& operator+=(const char* str);在字符串末尾拼接字符串
string& operator+=(const char c);在字符串末尾拼接字符
string& append(const char *s, int n);把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s, int pos, int n);字符串s中从pos开始的n个字符连接到字符串结尾

10.比较函数

字符串对比主要是用于比较两个字符串是否相等,判断谁大谁小的意义并不是很大

字符串比较是按字符的ASCII码进行对比
= 返回 0
> 返回 1
< 返回 -1

方法说明
int compare(const string &s) const;与字符串s比较
int compare(const char *s) const;与字符串s比较
<,>,<=, >=, ==, !=与字符串比较(这个更方便)

11.提取子串

从字符串中获取想要的子串

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

12.字符修改

string中单个字符存取方式有两种

方法说明
char& operator[](int n);通过[]方式取字符。例如:str[0] = 'x';
char& at(int n);通过at方法获取字符.例如:str.at(1) = 'x

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

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

相关文章

Linux操作系统:从入门到精通

前言 Linux操作系统是当今计算机世界中的重要一环。它不仅在服务器和企业级应用中广泛使用&#xff0c;同时也是许多开发者和技术爱好者的首选。本文将带你全面了解Linux操作系统的基础知识、常用命令及其在不同领域的应用。 一、Linux简介 1.1 什么是Linux&#xff1f; Li…

Java常用类2

StringBuffer和StringBuilder StringBuffer与StringBuilder类介绍 StringBuffer是String的对等类&#xff0c;提供了许多字符串功能。您可能知道&#xff0c;String表示长度固定、不可修改的字符序列。与之相对应&#xff0c;StringBuffer表示可增长、可写入的字符序列。Stri…

重写equals为什么要重写hashCode???

当你在Java中重写了equals()方法后&#xff0c;通常建议你也应该重写hashCode()方法。这是基于Java集合框架的设计原则&#xff0c;具体来说是基于Object类中的equals()和hashCode()方法之间的约定。以下是为什么需要这样做的一些关键原因&#xff1a; 一致性原则&#xff1a;…

[Redis]缓存常见问题解决(缓存穿透、击穿、雪崩一文解决!通俗易懂、代码实战!手把手教你解决缓存问题三兄弟!)

Redis常见问题解决 要求 只用一种缓存技术&#xff0c;从实验点中挑一些试验进行试验原理。 1.缓存原理 目标&#xff1a;理解缓存的基本原理和工作机制。 实验步骤&#xff1a; 阅读各缓存技术机制的文档和官方资料。实现一个简单的应用程序&#xff0c;模拟数据的读写和…

音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

试析C#编程语言的特点及功能

行步骤&#xff0c;而不必创建新方法。其声明方法是在实例化委托基础上&#xff0c;加一对花括号以代表执行范围&#xff0c;再加一个分号终止语句。 2.3.3 工作原理 C#编译器在“匿名”委托时会自动把执行代码转换成惟一命名类里的惟一命名函数。再对存储代码块的委托进行设…

【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位

当我们想要将一个16位的 Register_Value 拆分成高8位和低8位&#xff0c;并存储到 Send_Data_Uart5 数组中时&#xff0c;有几种常见的方法可以实现。让我们逐一优化和详细分析每种方法&#xff1a; 方法 1: 使用位移和位掩码&#xff08;常用方法&#xff09; Send_Data_Uar…

Erlang 在处理高并发实时通信场景时,相比其他编程语言有哪些独特的优势和局限性?

Erlang 在处理高并发实时通信场景时具有以下独特的优势&#xff1a; 轻量级进程模型&#xff1a;Erlang 使用轻量级进程模型&#xff0c;每个 Erlang 进程占用非常少的内存&#xff0c;并且可以创建数百万个进程&#xff0c;使得系统可以支持大规模的并发连接。 纯函数式语言&…

最热门的智能猫砂盆好不好用?这期统统告诉你!

身为上班族的我们&#xff0c;常常被工作和出差填满日程。忘记给猫咪铲屎也不是一次两次了。但我们必须意识到&#xff0c;不及时清理猫砂盆不仅会让猫咪感到不适&#xff0c;还可能引发泌尿系统感染、皮肤疾病等健康问题。为了解决这个问题&#xff0c;越来越多的铲屎官开始将…

快速上手golang(持续更新)

由于项目需要&#xff0c;我不得不快速掌握go语言来帮助我进行项目的开发。时间紧迫到我来不及去了解语言的特性就直接项目上手了。我决定就先熟悉一个主流的go框架和go语言的一些日常用法&#xff0c;之后就得滑着这只破船摇摇晃晃上路了。 1 基础命令 就说几个用的多的&…

【Linux】使用信号进行进程间通信

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ ​ 实现原理&a…

[机器学习]-2 经典机器学习算法

一 线性模型 线性模型是机器学习中最基本和最常用的一类模型&#xff0c;假设输出变量是输入变量的线性组合。线性模型在许多实际应用中表现良好&#xff0c;并且为更复杂的模型&#xff08;如非线性模型、深度学习模型&#xff09;奠定了理论基础&#xff1b;优点是简单易懂&…

江苏隆昌化工上线隆道平台 采购管理迎来全面升级

当前&#xff0c;传统产业与数字产业深度加速融合&#xff0c;大数据、云计算、人工智能等新技术推动产业深刻变革&#xff0c;能源化工行业迎来战略转型加速期。数字化转型已成为能源化工企业提升运营效率、控制运营成本、提高产品质量、打造竞争优势的强大引擎。为实现传统采…

在C#中使用事务

文章目录 一、概述1、事务ACID特性2、.NET开发者用到的5种事务机制:二、数据库事务1、不同数据库的事务规则2、数据库事务的优势和限制三、ADO.Net事务四、System.EnterpriseServices自动事务处理五、System.Transactions事务1、显式事务(Explicit Transaction)2、Transacti…

数据库管理-第213期 HaloDB-Oracle兼容性测试03(20240625)

数据库管理213期 2024-06-25 数据库管理-第213期 HaloDB-Oracle兼容性测试03&#xff08;20240625&#xff09;1 索引1.1 B-Tree索引1.2 Hash索引1.3 复合索引1.4 唯一索引1.5 表达式索引1.6 部分索引 2 视图3 表连接3.1 内连接3.2 左/右外连接3.3 全连接清理环境&#xff1a; …

Linux内核测试技术

Linux 内核是Linux操作系统的核心部分&#xff0c;负责管理硬件资源和提供系统调用接口。随着 Linux 内核的不断发展和更新&#xff0c;其复杂性和代码规模也在不断增加。因此&#xff0c;确保内核的稳定性和可靠性变得尤为重要。内核测试技术是实现这一目标的关键手段。本文将…

css中定义鼠标指针样式的属性cursor

在CSS中&#xff0c;cursor 属性用于定义鼠标指针在元素上移动时的样式。它允许你改变默认的鼠标指针样式&#xff0c;以提供关于用户可以进行哪些操作的视觉反馈。 以下是cursor属性的一些常见值和用法&#xff1a; 默认值&#xff1a;auto 这是大多数元素的默认设置。浏览器…

学懂C#编程:常用高级技术——学会C#多线程开发(一)

多线程基本概念 在C#中&#xff0c;多线程允许你同时执行多个代码路径。每个线程代表一个独立的执行流&#xff0c;操作系统可以在不同的处理器核心上并行执行这些线程&#xff0c;或者在单个核心上通过时间分片来模拟并行执行。 关键概念&#xff1a; Thread&#xff1a;代…

iptables配置NAT实现端口转发

加载防火墙的内核模块 modprobe ip_tables modprobe ip_nat_ftp modprobe ip_conntrack 1.开启路由转发功能 echo net.ipv4.ip_forward 1 >> /etc/sysctl.conf sysctl -p2、将本地的端口转发到本机端口 将本机的 7777 端口转发到 6666 端口。 iptables -t nat -A PR…