C++系列-String(二)

🌈个人主页:羽晨同学 

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

#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.mzph.cn/bicheng/32785.shtml

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

相关文章

【Android面试八股文】如果 onTouchEvent()方法返回false,onClick()方法还会执行么?

文章目录 一、onTouchEvent 返回 false 的情况二、示例场景分析三、结论在 Android 中,拦截事件通常指阻止事件继续传递或者消费事件,以防止它继续触发其他后续事件(比如 onClick())。 在 onTouchEvent() 方法中,如果返回 false,表示当前 View 没有处理该事件,Android …

Java启动jar设置内存分配详解

在微服务架构越来越盛行的情况下&#xff0c;我们通常一个系统都会拆成很多个小的服务&#xff0c;但是最终部署的时候又因为没有那么多服务器只能把多个服务部署在同一台服务器上&#xff0c;这个时候问题就来了&#xff0c;服务器内存不够&#xff0c;这个时候我们就需要对每…

Spring响应式编程之Reactor操作符

操作符 操作符Processo<T,R>&#xff08;1&#xff09;创建操作符&#xff08;2&#xff09;转换操作符&#xff08;3&#xff09;组合操作符&#xff08;4&#xff09;条件操作符&#xff08;5&#xff09;错误处理操作符 操作符Processo<T,R> 操作符并不是响应式…

【Python机器学习实战】 | 基于线性回归以及支持向量机对汽车MPG与自重进行回归预测

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

【Android面试八股文】请你描述一下JVM的内存模型

文章目录 JVM内存模型1. 方法区(Method Area)运行时常量池(Runtime Constant Pool)2. 堆(Heap)3. 栈(Stack)4. 本地方法栈(Native Method Stack)5. 程序计数器(Program Counter Register)6. 直接内存(Direct Memory)JVM内存溢出的情况Java的口号是: “Write onc…

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics&#xff1a;向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System m…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

如何关闭软件开机自启,提升电脑开机速度?

如何关闭软件开机自启&#xff0c;提升电脑开机速度&#xff1f;大家知道&#xff0c;很多软件在安装时默认都会设置为开机自动启动。但是&#xff0c;有很多软件在我们开机之后并不是马上需要用到的&#xff0c;开机启动的软件过多会导致电脑开机变慢。那么&#xff0c;如何关…

【break】大头哥哥做题

【break】大头哥哥做题 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int sum 0;//求和int day 0;//天数 while(1){int a;cin>>a;if(a-1){break;//结束当前循环 }sum sum a; …

HTTP基本概念介绍

HTTP概述 HTTP : 超文本传输协议&#xff0c;HTTP是浏览器端Web通信的基础。 一&#xff0c; 两种架构 B/S架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构。 B: 浏览器&#xff0c;比如Firefox 、Google 、Internet; S: 服务器&#xff0c;Apache&#xff0c…

[stm32]温湿度采集与OLED显示

一、I2C总线协议 I2C&#xff08;Inter-integrated circuit &#xff09;是一种允许从不同的芯片或电路与不同的主芯片通信的协议。它仅用于短距离通信&#xff0c;是一种用于两个或多个设备之间进行数据传输的串行总线技术&#xff0c;它可以让你在微处理器、传感器、存储器、…

6月20日(周四)A股行情总结:A股险守3000点,恒生科技指数跌1.6%

A股三大股指走弱&#xff0c;科创板逆势上扬&#xff0c;半导体板块走强&#xff0c;多股20CM涨停。中芯国际港股涨超1%。恒生科技指数跌超1%。离岸人民币对美元汇率小幅走低&#xff0c;20日盘中最低跌至7.2874&#xff0c;创下2023年11月中旬以来的新低&#xff0c;随后收复部…

287 寻找重复数-类似于环形链表II

题目 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums…

理解堆排序

堆排序&#xff08;Heapsort&#xff09;是一种基于堆这种数据结构的排序算法&#xff0c;但在实际实现中&#xff0c;堆通常是用数组来表示的。这种方法充分利用了数组的特性&#xff0c;使得堆的操作更加高效。下面通过详细解释和举例说明来帮助理解这种排序方式。 堆的数组…

Linux应急响应——知攻善防应急靶场-Linux(1)

文章目录 查看history历史指令查看开机自启动项异常连接和端口异常进程定时任务异常服务日志分析账户排查总结 靶场出处是知攻善防 Linux应急响应靶机 1 前景需要&#xff1a; 小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&…

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能&#xff0c;以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表&#xff1a; 文本输入&#xff1a; 输入要显示的文字内容&#xff0c;…

强化学习算法复现记录

目录 1.多智能体强化学习MADDPG tensorflow2版本IMAC tensorflow2版本 2.单智能体强化学习DQN pytorch版本PPO pytorch版本 1.多智能体强化学习 MADDPG tensorflow2版本 文章链接&#xff1a;tensorflow2实现多智能体强化学习算法MADDPG IMAC tensorflow2版本 文章链接&…

如何利用AopContext.currentProxy()解决事务管理中的方法调用问题

在Spring应用开发中&#xff0c;使用AOP&#xff08;面向切面编程&#xff09;来管理事务是非常常见的做法。然而&#xff0c;在某些场景下&#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;给了我们比以前更多的业余…

Linux进程概念(二)

上期我们已经学习了进程的基础的内容&#xff0c;已经对进程的基本概念有了了解&#xff0c;知道了进程的组成&#xff0c; 本期我们将以操作为主进一步探讨进程的相关概念。 目录 查看进程 创建进程 查看进程 查看进程主要有两种方式。 ps ajx指令 在当前目录下有名为tes…