c++的STL+string

news2025/7/9 20:34:41

目录

STL

什么是STL?

 STL有哪些版本?

 string

string的使用:

 string st1

 st2 += "北山口镇"​编辑

 string st3 = "巩义市"

string st4(10, '*')

cout << st1 << endl

string st6(st2);    string st7 = st2;

string st7("hello world", 5);

​编辑

string st8(st7, 2, 3);

实现数组元素的逆置:


STL

什么是STL?

答:

 STL有哪些版本?

答:

 string

 如何进行理解:

template<class T>
class basic_string
{
private:
	T* _str;
	size_t _size;
	size_t _capacity;
};
typedef basic_string<char> string;

string的本质就是这样,我们先通过模板写一个数组模板,然后该数组模板的char类型的实例化对应的就是string

string的使用:

#include<iostream>
#include<string>
using namespace std;
void test_test1()
{
	string st1;
	string s2("巩义市");
}
int main()
{
	test_test1();
	return 0;
}

要注意string也是属于std中的,所以需要我们使用using namespaced std来方便string的使用。

 我们可以发现,string在库里是有默认的构造函数。

 string st1

 

 st2 += "北山口镇"

 所以string是有+=的重载函数的

 string st3 = "巩义市"

 

 

 所以string的库中是有拷贝构造函数的

string st4(10, '*')

 

 我们完成了把string中的前十个元素初始化为*

cout << st1 << endl

 

 string同样也支持流插入。

string st6(st2);
    string st7 = st2;

拷贝构造,我们看其是否是深拷贝。

 

首先,完成了拷贝。

 

 

 

 并且完成了深拷贝。

string st7("hello world", 5);

 表示用hello world的前元素对st7进行初始化。

string st8(st7, 2, 3);

 

 表示用st7的第二个元素开始,往后的三个元素对st8进行初始化。

我们这里的第三个参数也可以不写:

不给的话,默认的参数是npos

 npos的默认值也就是无符号整型的最大值,所以相当于我们把st7从第二个元素开始全部拷贝给st10,打印的结果如下:

 

 假如我们想要把字符串的每一个元素都加1的话,我们该怎么处理?

答:我们可以使用for循环,

1:下标的形式

void test_test2()
{
	string s1("1234");
	for (size_t i = 0; i < s1.size(); ++i)
	{
		s1[i]++;
		cout << s1[i] << endl;
	}
}
int main()
{
	test_test2();
	return 0;
}

这个size()也是我们的string的成员函数,我们进行打印。

2:范围for的形式:

void test_test2()
{
	string s1("1234");
	for (autoch : s1)
	{
		ch--;
	}
	cout << s1 << endl;
}
int main()
{
	test_test2();
	return 0;
}

这种写法是不行的,因为范围for这里表示的是把s1的每个元素都赋给ch,但是我们让ch改变并不影响数组中的值,所以我们需要这样修改。

我们可以用引用来接收

这里的意思是把s1每个元素的引用都赋给ch,也就是说ch是s1的每个元素的别名,所以我们对ch的处理会使数组元素发生改变。

实现数组元素的逆置:

int main()
{
	/*test_test2();*/
	string s1("1234");
	size_t begin = 0;
	size_t end = s1.size() - 1;
	while (begin < end)
	{
		swap(s1[begin], s1[end]);
		begin++;
		end--;
	}
	cout << s1 << endl;
	return 0;
}

我们进行编译:

 

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

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

相关文章

0086 Java核心技术卷I Chapter05

目录 5.6枚举类 5.7 反射 5.7.1 Class类 4.7.2 声明异常入门 5.7.3 资源 5.7.4 利用反射分析类的能力 5.7.5 使用反射在运行时分析对象 5.7.6 使用反射编写泛型数组代码 5.7.7 调用任意方法和构造器 5.8 继承的设计技巧 5.6枚举类 public enum Size{SMALL,…

Android聚合SDK母包反编译出包教程

文章目录【前言】一、SDK预处理1、SDK资源合并1.1、合并res目录下的资源1.2、合并libs目录1.3、合并assets目录1.4、合并AndroidManifest.xml1.5、合并jar2、jar转smali2.1、jar 混淆合并2.2、jar转dex2.3、dex转smali二、母包apk反编译1、删除母包模板代码1.1、删掉母包SDK相关…

初识C++ (五)

作者&#xff1a;小萌新 专栏&#xff1a;初阶C 作者简介&#xff1a;大二学生 希望能和大家一起进步 内容简介&#xff1a;本文会简单的介绍auto关键字 还有nullptr关键字 加油&#xff01; 初识Cauto关键字c语言之前的用法C中的新用法auto使用细则auto不能使用的场景1. 未初…

直击固定资产管理痛点,让企业轻松管理海量固定资产

随着固定资产数量和种类、人员、分支机构越来越多&#xff0c;固定资产管理难度加大。传统人工表格管理固定资产的方式在具体实施过程中&#xff0c;会有种种痛点。 1)资产种类繁多&#xff0c;存放地分散且人员变更频繁&#xff0c;管理难度大。 2)盘点费时费力&#xff0c;手…

云原生Kubernetes 基本概念和术语

一、概述 Kubernetes 中的大部分概念如 Node 、 Pod 、 Replication Controller 、 Service 等都可以看作一 种“资源对象”&#xff0c;几乎所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具&#xff08;或者 API 编程调用&#xff09;执行增、删、改、查等操作并将…

工作中何如来合理分配核心线程数?

文章目录一 回顾1.1 使用线程池的优点1.2 任务类型1.3 IO密集型任务确定线程数1.4 CPU密集型任务确定线程数1.5 混合型任务确定线程数一 回顾 1.1 使用线程池的优点 降低资源消耗&#xff1a;线程是稀缺资源&#xff0c;如果无限制地创建&#xff0c;不仅会消耗系统资源&…

学习笔记-Windows 安全

Windows 安全 注 : 笔记中拓扑图 drawio 源文件在其图片目录下 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 漏洞利用 LOL RDP 命令行开启RDP多开连接记录凭据窃取绕过组策略限制绕过本地安全策略限制…

手机浏览器怎么下载视频,第三方手机浏览器下载视频的方法

在我们的手机中&#xff0c;总少不了一款手机浏览器。很多人经常使用手机浏览器看视频&#xff0c;那么如何在网页中将喜欢的视频下载下载下来呢&#xff1f;下面给大家讲解UC浏览器、多御安全浏览器、QQ浏览器下载视频的方法&#xff0c;有需要的朋友可以继续往下看。 UC浏览器…

如何写成高性能的代码(三):巧用稀疏矩阵节省内存占用

稀疏矩阵的概念 一个mn的矩阵是一个由m行n列元素排列成的矩形阵列。矩阵里的元素可以是数字、符号及其他的类型的元素。 一般来说&#xff0c;在矩阵中&#xff0c;若数值为0的元素数目远远多于非0元素的数目&#xff0c;并且非0元素分布没有规律时&#xff0c;则称该矩阵为稀…

【数据结构】详解顺序表(图解)

目录一、顺序表的概念1.1、静态顺序表1.2、动态顺序表二、接口实现2.1、开辟一个动态顺序表及初始化2.2、顺序表的增容2.3、顺序表的尾插及尾删2.4、顺序表的头插及头删2.5、顺序表在pos处插入及删除数据2.6、顺序表的销毁及打印2.7、顺序表的查找及修改一、顺序表的概念 顺序表…

【linux/docker】解决ORA-28000: the account is locked

项目场景&#xff1a; oracle11g客户端连接失败 问题描述 java.sql.SQLException: ORA-28000: the account is locked 原因分析&#xff1a; 由于oracle 11g 在默认在default概要文件中设置了密码最大错误次数为10&#xff0c;“FAILED_LOGIN_ATTEMPTS10”&#xff0c;密码错误…

单商户商城系统功能拆解25—营销中心—优惠券

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

NumPy数组基础

一、NumPy数组属性 首先我们先了解一下NumPy 数组属性。NumPy 的数组中比较重要 ndarray 对象属性有&#xff1a; 属性说明ndarray.ndim秩&#xff0c;即轴的数量或维度的数量ndarray.shape数组的维度&#xff0c;对于矩阵&#xff0c;n 行 m 列ndarray.size数组元素的总个数…

Python应用开发——串口通信

Python应用开发——串口通信 目录Python应用开发——串口通信前言1 环境搭建2 硬件准备3 代码编写与测试3.1 简单测一下串口收发3.2 补充细节3.3 完善整个收发流程结束语前言 在嵌入式开发中我们经常会用到串口&#xff0c;串口通信简单&#xff0c;使用起来方便&#xff0c;且…

20:访问者模式

1&#xff1a;定义 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 2&#xff1a;结构 访问者模式包含以下主要角色: 抽象访问者&#xff08;Visitor&#xff09;角色&#xff1a;定义了对每一个元…

Matlab 高光谱遥感数据处理与混合像元分解

教程从基础、方法、实践三方面对高光谱遥感进行讲解。基础篇&#xff0c;站在学员的角度去理解“高光谱”&#xff0c;用大家能听的懂的语言去讲述高光谱的基本概念和理论&#xff0c;帮助学员深入理解这项技术的底层科学机理。方法篇&#xff0c;将高光谱技术与MATLAB工具结合…

Yolov5:强大到你难以想象──新冠疫情下的口罩检测

初识Yolov5是看到一个视频可以检测街道上所有的行人&#xff0c;并实时框选出来。之后学习了CNN卷积神经网络&#xff0c;在完成一个项目需求时&#xff0c;发现卷积神经网络在切割图像方面仍然不太好用。于是我想到了之前看到的Yolov5&#xff0c;实战后不禁感慨一句&#xff…

50天50个前端小项目(纯html+css+js)第十八天(背景轮播图)

今天要做的是一个轮播图&#xff0c;不过是属于全屏类型的轮播图&#xff0c;先来看看效果&#xff1a; 点击左右按钮能切换背景&#xff0c;达到轮播图效果 来看代码实现部分&#xff0c;首先是html: <!DOCTYPE html> <html lang"en"><head>&…

四大含金量高的算法证书考试

证书考试推荐一、PAT 计算机程序设计能力测试二、CCF CSP认证三、团体程序设计天梯赛四、蓝桥杯大赛一、PAT 计算机程序设计能力测试 官网&#xff1a;PAT 计算机程序设计能力测试 PAT为浙江大学出的一款程序设计的测试网站&#xff0c;分为乙级、甲级、顶级三种&#xff0c;…

【MySQL 第十二天 事务的介绍|InnoDB使用事务】

【MySQL 第十二天 事务的介绍|InnoDB使用事务】【1】mysql事物的介绍【2】mysql事务处理的方法【3】mysql是u用InnoDB使用事务生命不息&#xff0c;学习不止 【1】mysql事物的介绍 atomicity 原子性&#xff1a;所有事情是统一的整体&#xff0c;必须一起执行&#xff0c;或者都…