C++系列-String(二)

news2025/1/12 22:50:32

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void test_string3()
{
	string s1("hello world");
	s1[0] = 'x';
	cout << s1.size() << endl;

	for (size_t i = 0; i < s1.size(); i++)
	{
		cout << s1[i] << " ";
	}
	cout << endl;

	for (size_t i = 0; i < s1.size(); i++)
	{
		s1[i]++;
	}
	cout << endl;
	s1[0] = 'x';
	for (size_t i = 0; i < s1.size(); i++)
	{
		cout << s1[i] << " ";
	}
	cout << endl;


}
int main()
{
	test_string3();
	return 0;
}

在这个代码当中,结果为

 

我们可以看到,每个字节的ASCII码值都加了1

而若是我们使得【】中的数字大于s1的范围,会出现越界警告

	s1[20];

 

	const string s2("hello world");
	s2[0] = 'x';

而我们要是这个时候使用const进行修饰,则不能再对s2进行修改

 接下来,我们讲解三种对string的遍历方式

  • 下标+【】
	string s1("hello world");
	//遍历方式1:下标+[]
	for (size_t i = 0; i < s1.size(); i++)
	{
		cout << s1[i] << " ";
	}
	cout << endl;

 

  • 迭代器
	//遍历方式2:迭代器
	auto it1 = s1.begin();
	while (it1 != s1.end())
	{
		*it1 += 3;
		cout << *it1 << " ";
		it1++;
	}
	cout << endl;

 

我们不仅可以对string进行遍历,而且可以对其中的值进行修改

  • 范围for
	//遍历方式3:范围for
	//底层角度,就是迭代器
	cout << s1 << endl;
	for (auto& e : s1)
	{
		e++;
		cout << e << " ";
	}
	cout << endl;
	cout << s1 << endl;

对于范围for而言,相同的是我们不仅可以对其进行遍历,也可以对其进行修改,并且对于范围for而言,他的底层就是迭代器

	list<int>lt1;
	lt1.push_back(1);
	lt1.push_back(2);
	lt1.push_back(3);
	list<int>::iterator it = lt1.begin();
	while (it != lt1.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	for (auto e : lt1)
	{
		cout << e << " ";
	}
	cout << endl;

 

void test_string5()
{
	const string s1("hello world");
	auto it1 = s1.begin();
	while (it1 != s1.end())
	{
		*it1 += 3;
	}
}

当我们用const修饰s1的时候,s1的内容使用迭代器仍然无法修改

接下来,我们来看一下rbegin和rend

	auto cit1 = s1.rbegin();
	while (cit1 != s1.rend())
	{
		cout << *cit1 << " ";
		++cit1;
	}
	cout << endl;

 

其实通过结果我们可以看到,rend和rbegin进行了相反遍历

	string s2("hello world");
	string::reverse_iterator it2 = s2.rbegin();
	while (it2 != s2.rend())
	{
		cout << *it2 << " ";
		++it2;
	}
	cout << endl;

其实通过这个代码,我们可以回顾到之前讲过的auto的作用,可以自动辨别类型,是不是相当方便。

我们接下来讲string中的下一个接口,对其按照字典序进行排序

}
void test_string6()
{
	string s1("hello world");
	cout << s1 << endl;
	//第一个和最后一个参与排序
	sort(s1.begin(), s1.end());

	sort(++s1.begin(), --s1.end());

	//前五个进行排序[0,5)
	sort(s1.begin(), s1.begin() + 5);
	cout << s1 << endl;
}

接下来我们来讲最后一个接口,push_back

void test_string7()
{
	string s1("hello world");
	cout << s1 << endl;
	//push_back只能增加字符
	s1.push_back('x');
	cout << s1 << endl;
	//s1.push_back("xxxxx");
	//append既可以用于字符串,也可以用于字符
	s1.append("yyyyyy!!");
	cout << s1 << endl;
	s1.append("x");
	cout << s1 << endl;
	string s2("111111");
	s1 += 'y';
	s1 += "zzzzzz";
	s1 += s2;
	cout << s1 << endl;

}

 

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

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

相关文章

计算机组成入门知识

前言&#x1f440;~ 数据库的知识点先暂且分享到这&#xff0c;接下来开始接触计算机组成以及计算机网络相关的知识点&#xff0c;这一章先介绍一些基础的计算机组成知识 一台计算机如何组成的&#xff1f; 存储器 CPU cpu的工作流程 主频 如何衡量CPU好坏呢&#xff1f…

基于stm32的温度采集并且显示

目录 一、I2C总线通信协议 &#xff08;一&#xff09;I2C简介 &#xff08;二&#xff09;I2C物理层 &#xff08;三&#xff09;I2C协议层 1、I2C基本读写过程 2、通信的起始和停止信号 3、数据的有效性 4、地址及数据方向 5、响应 &#xff08;四&#xff09;软件I…

常说的云VR是什么意思?与传统vr的区别

虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;是一种利用计算机技术模拟产生一个三维空间的虚拟世界&#xff0c;让用户通过视觉、听觉、触觉等感官&#xff0c;获得与现实世界类似或超越的体验。VR技术发展历程可追溯至上世纪&#xff0c;经历概念提出、…

方差分析【单/双因素方差分析】

文章目录 方差分析一、单因素方差分析&#xff08;Analysis of Variance&#xff09;1.方差分析在做什么&#xff1f;2.方差分析的思路&#xff1a;3.方差分析中的计算&#xff1a;4.构造F统计量&#xff1a; 二、双因素方差分析(Two-way ANOVA)1.双因素方差分析在做什么&#…

HCIA 18 结束 企业总部-分支综合实验(上)

1.实验介绍及拓扑 &#xff08;1&#xff09;总部和分支机构都可以上互联网访问8.8.8.8&#xff1b; &#xff08;2&#xff09;总部和分支机构使用广域网专线互访作为主线&#xff0c;并且通过互联网建立GRE隧道互访作为备线&#xff1b; &#xff08;3&#xff09;总部内为…

【database3】oracle:数据交换/存储/收集

文章目录 1.oracle安装&#xff1a;swap&#xff0c;dd1.1 创建swap交换区&#xff1a;grep MemTotal /proc/meminfo &#xff08;安装Oracle物理内存要求1024MB以上&#xff09;&#xff0c;grep SwapTotal /proc/meminfo1.2 安装依赖包及改系统核心参数&#xff1a;关闭一些系…

机器学习算法(二):1 逻辑回归的从零实现(普通实现+多项式特征实现非线性分类+正则化实现三个版本)

文章目录 前言一、普通实现1 数据集准备2 逻辑回归模型3 损失函数4 计算损失函数的梯度5 梯度下降算法6 训练模型二、多项式特征实现非线性分类1 数据准备与多项式特征构造2 逻辑回归模型三、逻辑回归 --- 正则化实现1 数据准备2 逻辑回归模型3 正则化损失函数4 计算损失函数的…

Cyber Weekly #12

赛博新闻 1、Anthropic发布Claude 3.5 Sonnet 本周五&#xff08;6月21日&#xff09;凌晨&#xff0c;Anthropic宣布推出其最新的语言模型Claude 3.5 Sonnet&#xff0c;距离上次发布Claude3才过去3个月。Claude3.5拥有20万token的长上下文窗口&#xff0c;目前已经在Claude…

企业中订单超时关闭是怎么做的?我说用延迟消息,面试官让我回去等消息?

文章目录 背景时序图方案对比方案一 被动关闭方案二 定时关闭方案三 Rocket MQ延迟消息 总结 背景 订单超时未支付是电商中的一个核心场景&#xff0c;当用户创建订单后&#xff0c;超过一定时间没有支付&#xff0c;平台需要及时将该订单关闭。需要关闭的主要原因有以下几个&…

初中英语优秀作文分析-005How to Plan Our Life Wisely-如何明智地规划我们的生活

PDF格式公众号回复关键字:SHCZYF005 记忆树 1 The “double reduction policy” reduces the burden on students and offers us more spare time than before, but how to plan our life wisely? 翻译 “双减政策”减轻了学生的负担&#xff0c;给了我们比以前更多的业余…

预备资金有5000-6000买什么电脑比较好?大学生电脑选购指南

小新pro14 2024 处理器&#xff1a;采用了英特尔酷睿Ultra5 125H或Ultra9 185H两种处理器可选&#xff0c;这是英特尔最新的高性能低功耗处理器&#xff0c;具有18个线程&#xff0c;最高可达4.5GHz的加速频率&#xff0c;支持PCIe 4.0接口&#xff0c;内置了强大的ARC核芯显卡…

Windows Update Blocker 完全禁用或启用Windows系统上的自动更新,一键阻止,无需额外操作!

你是否曾因为突如其来的系统更新而感到手忙脚乱&#xff1f;Windows Update Blocker v1.8让你只需一键&#xff0c;即可完全禁用或启用Windows系统上的自动更新&#xff0c;不需要任何的额外操作&#xff0c;只需要打开软件&#xff0c;点击应用即可关闭Windows系统上的自动更新…

DVWA-CSRF-samesite分析

拿DVWA的CSRF为例子 接DVWA的分析&#xff0c;发现其实Impossible的PHPSESSID是设置的samesite1. 参数的意思参考Set-Cookie SameSite:控制 cookie 是否随跨站请求一起发送&#xff0c;这样可以在一定程度上防范跨站请求伪造攻击&#xff08;CSRF&#xff09;。 下面用DVWA CS…

[案例]国家数据局:首批“数据要素×”典型案例深度解析系列之五

“ 通过示范引领&#xff0c;激励多方主体积极参与&#xff0c;释放数据要素价值。” 本文为“数据要素”典型案例深度解析系列的第五篇&#xff0c;前四篇请见 [案例]国家数据局&#xff1a;首批“数据要素”典型案例深度解析系列之一 [案例]国家数据局&#xff1a;首批“数…

微信小程序入门2

微信开发者工具的安装方法 1.打开微信开发者工具下载页面 在微信小程序管理后台的左侧边栏中选择“开发工具”&#xff0c;然后选择“开发者工具”&#xff0c;即可找到微信开发者工具的下载页面。 2.打开微信开发者工具的下载链接页面 单击“下载” 按钮下载&#xff0c;即…

【网络安全的神秘世界】已解决burpsuite报错Failed to start proxy service on 127.0.0.1:8080

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 解决burpsuite无法在 127.0.0.1&#xff1a;8080 上启动代理服务端口被占用以及抓不到本地包的问题 Burpsuite无法启动proxy…

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之二,数据的预处理)

数据的预处理(Data Preprocessing) 2 Data Preprocessing数据的预处理 数据预处理的几种方法 2&#xff0c;1 数据的零点中心化 数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近&#xff0c;也就是让数据的整体均值变为0。 ​ 2&#xff0c;2 数据的标准化 数据…

VS Code Arduino编程

①Arduino Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件&#xff08;各种型号的Arduino板&#xff09;和软件&#xff08;Arduino IDE)。 ②VS Code&#xff08;全称 Visual Studio Code&#xff09; 是由微软开发的一款开源、轻量级的跨平台现代代码编辑器…

PADS学习笔记

1.PADS设计PCB流程 封装库&#xff08;layout&#xff09;&#xff0c;原理图库&#xff08;logic&#xff09;的准备原件封装的匹配&#xff08;logic&#xff09;原理图的绘制&#xff08;logic&#xff09;导网表操作&#xff08;logic&#xff09;导入结构&#xff08;lay…

一文掌握提升 Python 代码质量的最佳伴侣工具:black、isort、flake8 和 mypy

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 在 Python 项目开发中&#xff0c;为了保持代码质量和提高开发效率&#xff0c;我们常需借助一些工具。今天&#xff0c;我将为大家介绍四个 Python 代码工程的得力助手&#xff1a;black、isort、flak…