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

C++学习 --string

目录

1, 什么是string

2, 创建string

3, 操作string

3-1, 赋值

3-1-1, 赋值(=)

3-1-1, 赋值(assign)

3-2, 修改

3-2-1, 拼接

3-2-1-1, 拼接(+)

3-2-1-2, 拼接(append)

3-2-2, 替换(replace)

3-2-3, 单字符操作

 3-2-4, 插入(insert)

3-3, 查询

3-3-1, 查找(find)

3-3-2, 查找(rfind)

 3-3-3, 子串(substr)

 3-3-4, 单字符操作

3-3-5, 获取首尾字符

3-4, 比较(compare)

3-5, 删除(erase)

3-6,获取字符串长度


1, 什么是string

C++中的字符串, 本质是一个类

2, 创建string

通过string 对象名, 创建一个string

//普通创建
string str1;
//拷贝构造,str1拷贝给str2
string str2(str1);
//定义5个a组成的字符串
string str3(5, 'a');

3, 操作string

3-1, 赋值

3-1-1, 赋值(=)

通过string 对象名 = 字符串, 进行string对象赋值

//创建str1, 并赋值aaa
string str1 = "aaa";
//创建str2, 并赋值bbb
string str2("bbb");

3-1-1, 赋值(assign)

通过对象名.assign(字符串), 进行string对象赋值

string str2;
str2.assign("bbb");
//字符串有5个字符c组成
string str3;
str3.assign(5,  'c');
//将str3拷贝给str4
string str4;
str4.assign(str3);
//表示获取str1从第3个索引开始直到最后的字符赋值给str2
str2.assign(str1, 3);
//表示获取str1从第3个索引开始的后两个字符赋值给str2
str2.assign(str1, 3, 2);

3-2, 修改

3-2-1, 拼接

3-2-1-1, 拼接(+)

通过对象1+对象2, 拼接两个字符串

string str1 = "hello c++";
//注意拼接之间没有空格, 等价于str1 += str1
str1 = str1 + str1;
3-2-1-2, 拼接(append)

通过对象名1.append(对象名2), 拼接两个字符串

string str1 = "hello c++";
str1.append(str1);
//表示从str1的第3个索引开始直到最后, 拼接到str1后面
str1.append(str1, 3);
//表示从str1的第2个索引开始, 拼接3个字符到str1后面
str1.append(str1, 2, 3);

3-2-2, 替换(replace)

 通过对象名.replace(起始索引, 结束索引, 替换值), 可替换字符串内容

string str1 = "hello c++";
//将第1~3号位索引对应的信息替换为aaa
str1.replace(1, 3, "aaa");

3-2-3, 单字符操作

通过对象名[索引]或者对象名.at(索引), 获取字符串的单个字符

//获取索引为1对应的字符
cout << str1[1] << endl;
cout << str1.at(1) << endl;

 3-2-4, 插入(insert)

通过对象名.insert(索引, 值), 向字符串中插入数据

//在str1的第二个索引位置插入aaa
str1.insert(2, "aaa");

3-3, 查询

3-3-1, 查找(find)

通过对象名.find(), 可查找字符串中的子串, 从开始查找, 返回对应的首次匹配索引

cout << str1.find("aa") << endl;

3-3-2, 查找(rfind)

通过对象名.rfind(), 可查找字符串中的子串, 从开始查找, 返回对应的首次匹配索引

cout << str1.find("l") << endl;

 3-3-3, 子串(substr)

通过对象名.substr(起始索引, 结束索引), 返回起始索引~结束索引的字符

//返回str1的第1~4个字符
cout << str1.substr(1, 4) << endl;

 3-3-4, 单字符操作

通过对象名[索引]或者对象名.at(索引), 修改字符串的单个字符

//修改索引为1对应的字符
str1[1] = 'a';
str1.at(2) = 'a';
cout << str1[1] << endl;
cout << str1.at(1) << endl;

3-3-5, 获取首尾字符

通过对象名.front(), 获取字符串首字符, 通过对象名.back(), 获取字符串尾字符

cout << str1.front() << endl;
cout << str1.back() << endl;

3-4, 比较(compare)

通过对象名1.compare(对象名2), 进行比较字符串大小逐个比较两个字符串的Ascii码, 相等返回0, 对象名1大于对象名2返回1, 对象名1小于对象名2返回-1 

string str1 = "hello c++";
string str2 = "1hello c++";
cout << str1.compare(str2) << endl;

3-5, 删除(erase)

通过对象名.erase(起始索引, 结束索引), 删除字符串中指定的字符

//删除str1的第1~3个字符
str1.erase(1, 3);
cout << str1 << endl;

3-6,获取字符串长度

cout << str1.size() << endl;

相关文章:

C++学习 --string

目录 1&#xff0c; 什么是string 2&#xff0c; 创建string 3&#xff0c; 操作string 3-1&#xff0c; 赋值 3-1-1&#xff0c; 赋值() 3-1-1&#xff0c; 赋值(assign) 3-2&#xff0c; 修改 3-2-1&#xff0c; 拼接 3-2-1-1&#xff0c; 拼接() 3-2-1-2&#xff…...

Spark SQL,DF,RDD cache常用方式

RDD中的cache 调用cache方法 val testRDD sc.parallelize(Seq(elementA, elementB, elementC)).map(x > (x._1, x._2)).setName("testRDD")testRDD.cache() dataframe中的cache 利用catalog以表的形式对数据进行缓存 import org.apache.spark.SparkConf impo…...

Python中如何用栈实现队列

目录 一、引言 二、使用两个栈实现队列 三、性能分析 四、应用场景 五、代码示例 六、优缺点总结 一、引言 队列&#xff08;Queue&#xff09;和栈&#xff08;Stack&#xff09;是计算机科学中常用的数据结构。队列是一种特殊的线性表&#xff0c;只允许在表的前端进行…...

python模块pyDes,DES对称加密算法库

一、简介 pyDes是一个Python模块&#xff0c;用于进行DES&#xff08;Data Encryption Standard&#xff09;加密和解密操作。DES是一种对称密钥加密算法&#xff0c;广泛用于数据保密和传输。 优点&#xff1a; 1.简单易用&#xff1a;pyDes模块提供了简单的接口&#xff0c;…...

Centos7安装配置nginx

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;小编会及时修改&#xff09; Centos7安装配置nginx Nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务&#xff0c;也…...

9.Spring 整合 Redis

引入依赖&#xff1a;spring-boot-starter-data-redis配置 Redis&#xff1a;配置数据库参数、编写配置类&#xff0c;构造 RedisTemplate访问 Redis&#xff1a; redisTemplate.opsForValue() redisTemplate.opsForHash() redisTemplate.opsForList() redisTemplate.opsForSe…...

【Java学习笔记】73 - 正则表达式

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter27/src/com/yinhai/regexp 一、引入正则表达式 1.提取文章中所有的英文单词 2.提取文章中所有的数字 3.提取文章中所有的英文单词和数字 4.提取百度热榜标题 正则表达式是处理文本的利器…...

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值&#xff08;排序&#xff09;643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…...

可观测性项目开发与学习ing

http1,2,3的区别 HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3 是不同版本的协议&#xff0c;它们在以下方面有所不同&#xff1a; HTTP/1.0: 是最早的版本&#xff0c;主要特点如下&#xff1a; 每个请求和响应都需要建立一个新的 TCP 连接。不支持持久连接&#xff08;Keep-Alive&…...

apache-poi

excel类型 excel分为03版本和07版本 03版本 new HSSFWorkbook(); 优点&#xff1a;速度快 缺点&#xff1a;只能写入65536行数据 文件类型&#xff1a;.xls07版本 new XSSFWorkbook(); 优点&#xff1a;不限制写入数量 缺点&#xff1a;容易造成内存溢出(OOM)&#xff0c;速度…...

TOD和PPS精确时间同步技术

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术&#xff0c;它们在许多领域都有广泛的应用&#xff0c;总的来说&#xff0c;PPS和TOD被广泛应用于各种需要高度精确时间同步的领域&#xff0c;包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…...

通过一个例子理解pytest的fixture的使用

需求 希望编写登陆web后做一些操作的测试用例&#xff0c;使用pytest框架具体测试用例执行前&#xff0c;需要先拿到web的token&#xff0c;这个获取token的动作只执行一次 例一 先上测试用例代码 adminpc-1:~$ cat my_test.py import pytestclass TestWebLogin:pytest.fi…...

单片机BootLoader是咋回事?

BootLoader的定义&#xff1a; CPU进入APP之前运行的一小段程序代码就叫做BootLoader。它是由程序员编写的&#xff0c;作用是更新应用程序。这也就说明了只有BootLoader的单片机才可以升级。有的产品有升级的需要就需要BootLoader了。 单片机的启动过程可以这么叙述&#xff…...

python与机器学习1,机器学习的一些基础知识(完善ing)

目录 1 关于阈值θ和偏移量b和公式变形的由来 2 激活函数 3 关于回归&#xff0c;分类等 4 关于模型 5 关于回归 6 关于分类 7 关于误差和梯度下降 7-2 最小二乘法修改θ 8 深度学习 10 分类 11 参考书籍 1 关于阈值θ和偏移量b和公式变形的由来 比如很多信息传入可…...

移动应用开发介绍及iOS方向学习路线(HUT移动组版)

移动应用开发介绍及iOS方向学习路线&#xff08;HUT移动组版&#xff09; 前言 ​ 作为一个HUT移动组待了一坤年&#xff08;两年半&#xff09;多的老人&#xff0c;在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文…...

vue+uniapp校园寻物失物招领平台 微信小程序1f6z5

系统中的核心用户是管理员&#xff0c;管理员登录后&#xff0c;通过管理员菜单来管理后台系统。主要功能有&#xff1a;首页、个人中心、用户管理、物品分类管理、物品信息管理、物品归还管理、留言板管理、系统管理等功能。管理员用例如图3-7所示。 对于本网上失物招领小程序…...

Linux内核--内存管理(三)物理内存分页机制--kmalloc及slub机制

一、引言 二、slub机制 ------>2.1、slub分配原理slub原理 ------>2.2、slub分配原理 ------>2.3、slub释放原理 ------>2.4、SLUB分配器 三、slub数据结构 ------>3.1、kmem_cache ------>3.2、kmem_cache_cpu ------>3.3、kmem_cache_node --…...

Shell - cron_protect.sh 监控 Python、Streaming 程序

目录 一.引言 二.Flink 程序监控 1.shell 脚本 2.crontab 配置 三.Python 程序监控 1.shell 脚本 2.crontab 配置 四.总结 一.引言 业务有流式处理数据的需求&#xff0c;需要 7x24 通过 Flink Python 程序进行处理。为了监控 Flink 与 Python 的程序运行状态并在程…...

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。 一般来说出现这个问题是因为使用git版本控制工具合并代码出现了问题&#xff0c;想要解决也很简单。 如图点击错误后定位到文件&#xff0c;发现也没有什么问题。 根据错误后边的提示&a…...

【赠书第9期】巧用ChatGPT高效搞定Excel数据分析

文章目录 前言 1 操作步骤 1.1 数据清理和整理 1.2 公式和函数的优化 1.3 图表和可视化 1.4 数据透视表的使用 1.5 条件格式化和筛选 1.6 数据分析技巧 1.7 自动化和宏的创建 2 推荐图书 3 粉丝福利 前言 ChatGPT 是一个强大的工具&#xff0c;可以为你提供在 Exce…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...