C嘎嘎浅聊string

news2025/1/12 9:02:46

那么这篇文章我们开始学习 c嘎嘎的string

stl简介

什么是stl

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架

stl版本

原始版本、P.J.版本、RW版本、SGI版本

stl的六大组件

string的相关知识点

几个重要的接口

无参构造:string s1();

拷贝构造: string s2(s1);

带参构造: string  s3("111");

string s3(size_t n, char c); 作用:string类对象中包含n个字符c

由于string有流插入和流提取因此我们可以直接使用cin和cout

string的一些操作

string类对象的容量操作

size/length   :返回字符串的有效长度

capacity :返回空间总大小

empty :检测字符串是否为空

clear :清空有效字符

reserve:预留空间

resize : 将有效字符的个数该成n个,多出的空间用字符c填充

以上的类对象容量使用的语法格式均为:对象名.函数名();

string类对象的访问及遍历操作

operator[]   :返回pos位置的字符

begin  end  : begin获取一个字符的迭代器 + end获取最后一个字符下一个位 置的迭代器

rbegin  ren  : begin获取一个字符的迭代器 + end获取最后一个字符下一个位 置的迭代器

string类对象的修改操作

puch_back    :   尾插字符

append   :  尾插字符

operator +=  :在字符串后追加字符串

c_str     :    返回C格式字符串

insert    :    选择位置插入         语法格式: 对象名.函数名(插入位置, 插入的字符串);

erase    :    删除字符     

erase的三种使用方式        

1. 指定删除

语法格式: s.erase(位置,删除个数);

拓展:s.erase(位置)   注意:这行代码的意思是删除第几个位置后的所有字符

2.头删

语法格式:s.erase(s.begin());

3.尾删

语法格式: s.erase(--s.end());

replace  :替换字符    语法格式: 对象名.replace(位置,替换个数, 替换内容);

那么这里大家需要注意一下:如果替换的内容要多余替换个数,则后面的字符串会后移

find   语法格式: 对象名.find("查找的内容");

 rfind   :从字符串pos位置开始往前找字符,返回该字符在字符串中的位置

substr   :在str中从pos位置开始,截取n个字符,然后将其返回

语法格式:对象名.substr(复制的第一个字符的位置, 字符串的长度);注意若省略字符串的长度,则到最后一个字符为止

insert

遍历string三种方式

1. 下标遍历

直接上例子:

eg.

string s2("hello world");

for( size_t  i = 0; i < s2.size(); i++)

{
    cout  <<  s[i]  <<  "  ";

}

2.迭代器

string s2("hello world");

string::iterator it = s2.begin();//这里的意思是在string这个类中调用iterator这个迭代器,创建it ,让it保存s2字符串的开头

注意这里的代码意思一定要理解。

while(it != s2.end())

{
cout << *it  <<"  ";//注意这里的* it不是指针!!!

   ++it;

}

注意:所有的容器都可以使用这种类似的方式访问!!!

3.范围for

这个的语法格式与python的for循环比较相似

虽然只是有些类似,但我们可以忽略。回到正题

范围for的语法格式:
for(auto   ch  :n)其中ch::第一部分是范围 内用于迭代的变量,n:第二部分则表示被迭代的范围

上例子:

for(auto  cur : n)

{
  cout << cur << "  ";

}

为了便于自己和大家理解,我在这个例子中的第一个变量设为current单词的缩写

总结:auto后面的两个变量可以理解为起始位置和终点位置,且起始位置也可以认为是当前位置,因为使用输出语句等时都是使用起始位置

小tips:auto后面的两个变量可以认为是起始位置(当前位置)、终点位置

那么这篇文章就先到这里了,我们下次再见

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

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

相关文章

机械学习—零基础学习日志(高数18——无穷小与无穷小)

零基础为了学人工智能&#xff0c;真的开始复习高数 学习速度加快&#xff01; 无穷小定义 这里可以记住&#xff0c;无穷小有一个特殊&#xff0c;那就是零。 零是最高阶的无穷小&#xff0c;且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

在云服务器上自动化部署项目,jenkins和gitee

▮全文概述 在编写项目时&#xff0c;很头大的事情就是需要自己手动的上传jar包到服务器上启动。如果出现一点bug&#xff0c;就要重头上传和启动。这是一件很烦的事情&#xff0c;所以&#xff0c;可以使用jenkins和gitee实现项目的自动部署 ▮全流程 在本地提交代码到gitee …

kvm+glusterfs+pcs分布式存储构建kvm高可用群集。

kvmglusterfspcs分布式存储构建kvm高可用群集。 高可用指能在短时间内自动完成故障转移&#xff0c;kvm在实现故障自动转移的方式如果要考虑速度那么基于共享存储的迁移方法无疑是最快的。而共享存储的高可用就可以用glusterfs来实现。 glusterfs可以利用分布式复制卷兼顾了性能…

图解RocketMQ之消费者如何进行消息重试

大家好&#xff0c;我是苍何。 在上一篇[[图解RocketMQ之生产者如何进行消息重试]]中分析了当生产者发送消息失败的时候&#xff0c;RocketMQ 是如何进行重试的。 最后留了一个问题&#xff0c;生产端的消息是重试 hold 住了&#xff0c;但如果消费者出现异常&#xff0c;消费…

leetcode53. 最大子数组和(java实现)

今天分享的题目是leetcode53题 本题的解题思路&#xff1a;贪心算法。 举个例子&#xff1a; nums [-2,1,-3,4,-1,2,1,-5,4]&#xff0c;如果说我们的累加和是负数那么就将其舍弃&#xff0c;换下一个位置从新进行累加&#xff0c;因为如果目前我们的累加和如果是负数那么还不…

Zotero的探索之路

下载安装 Zotero | Downloads&#xff1a;点击链接&#xff0c;不仅要下载软件本身&#xff0c;也要下载浏览器connector&#xff0c;这样就方便从网页抓取论文到zotero本地了&#xff0c;浏览器是使用插件导入下载包即可 导入文献方法 zotero自动下载&#xff08;推荐&#…

C 语言快速排序算法

升序排序 /*快速排序算法排序规则 */ int32_t CmpCb(const void* _a, const void* _b) {uint16_t* a (uint16_t*)_a;uint16_t* b (uint16_t*)_b;int32_t val 0;if (*a > *b){val 1;}else if (*a < *b){val -1;}else {val 0;}return val; }int main() {// 创建局部…

c++----类与对象(下)

当我们简单的学习了上一篇日期类。简单的理解并且使用了我们前面学习的知识。当然这还只是我们c的九牛一毛。并且我们的类与对象的知识还没学习完。今天我们来把类与对象的知识完善一下。 初始化列表 那么今天我们就不讲废话了&#xff0c;我们直接来主题。首先我们可以看到我…

大型语言模型入门

大型语言模型 快速、全面了解大型语言模型。学习李宏毅课程笔记。 ChatGPT 目前由OpenAI公司发明的非常火的人工智能AI应用ChatGPT&#xff0c;到底是什么原理呢&#xff1f; G&#xff1a;Generative(生成) P&#xff1a;Pre-trained(预训练) T&#xff1a;Transformer(一种…

手把手教你如何在Linux上轻松安装Python,告别编程入门难题

导语&#xff1a; Python作为当下最热门的编程语言之一&#xff0c;受到了越来越多人的喜爱。对于Linux用户来说&#xff0c;掌握如何在Linux上安装Python至关重要。今天&#xff0c;就让我带领大家一步步在Linux上安装Python&#xff0c;让你轻松迈入编程世界&#xff01; 一…

MATLAB(7)潮汐模型

一、前言 在MATLAB中模拟潮汐通常涉及到使用潮汐的理论模型&#xff0c;如调和常数模型&#xff08;Harmonic Constants Model&#xff09;&#xff0c;它基于多个正弦和余弦函数的叠加来近似潮汐高度随时间的变化。以下是一个简化的MATLAB代码示例&#xff0c;用于模拟一个基于…

centos在线安装部署2024年最新的docker版本

1.yum 包更新到最新 sudo yum update -y2.安装依赖软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23.添加阿里的镜像&#xff0c;下载镜像速度比较快 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/dock…

docker compse简介与安装

目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…

【跨时代】第四次工业革命彻底来袭!什么是AI+

你有没有一种很割裂的感觉&#xff0c;就是在短视频里&#xff0c;AI已经要改变全世界了 但自己一用&#xff0c;却发现只能和AI聊聊天 画几张图 难道是姿势不对&#xff1f;但具体是哪里不对呢。 作为一个老牌程序员&#xff0c;我前面分享了很多计算机相关内容&#xff0c;总…

java基础概念06-原码、反码、补码

一、八位二进制的取值范围&#xff08;没有符号位&#xff09; 二、原码 三、反码 若是反码的计算结果跨0了&#xff0c;则会溢出&#xff0c;计算结果又误差&#xff01; 原因&#xff1a;在反码当中0有两种表现形式&#xff1a; 解决方式&#xff1a;将反码中的两个0&#x…

SSM大学生体质管理系统-计算机毕业设计源码75960

摘要 基于SSM的大学生体质管理系统是一款综合性平台&#xff0c;融合了在线课程、健康知识、体测报告等多项功能&#xff0c;旨在为广大大学生提供全方位的健康管理服务。通过在线课程和健康知识模块&#xff0c;用户可以随时学习健康知识&#xff0c;掌握科学的健康管理方法&a…

推荐一个比较好的开源位置服务平台

平台简介 一直想做一款后台管理系统&#xff0c;同时可以管理人&#xff0c;车&#xff0c;物品&#xff0c;猫&#xff0c;狗&#xff0c;牛羊等一切可以移动的室外事物进行集中化管理&#xff0c;最初的需求聚焦——谁在哪儿&#xff01; 系统框架是基于当前最常用的RuoYi框架…

C# 设计模式之创建者模式

总目录 前言 在软件系统中&#xff0c;有时需要创建一个复杂对象&#xff0c;并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中&#xff0c;如果需要采购员去采购一批电脑时&#xff0c;在这个实际需求中&#xff0c;电脑就是一个复杂的对象&…

DVWA (SQL注入 low)

&#xff08;1&#xff09;判断注入是字符型还是数值型 判断恒为真&#xff0c;字符型&#xff0c;输出ures表中全部用户信息。 1 or 123 123 # &#xff08;2&#xff09;猜测SQL查询字段数 1后面加 闭合 id 查询的 &#xff0c;末尾加# 是注释了后面 的内容&#xff…

LLM智能体工程落地思考(一)

人工智能领域著名教授吴恩达在今年3月份红杉资本的人工智能峰会(AI Ascent)以及最近Snowflake峰会开发者日上都发表了关于AI Agent(人工智能体)的演讲。演讲中&#xff0c;其分享了对AI Agent未来发展潜力的展望。认为AI Agent能够让人工智能胜任更多种类的任务&#xff0c;甚至…