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

C++ STL常用容器1——string容器

写在前面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧目录1.string基本概念2.string构造函数3.string容器4.string字符串拼接5.string查找和替换6.string字符串比较7.string字符存取8.string插入和删除9.string子串1.string基本概念本质●string是C风格的字符串而string本质上是一个类string和char *区别●char*是一个指针●string是一个类类内部封装了char*管理这个字符串是一个char*型的容器。特点string类内部封装了很多成员方法例如查找find拷贝copy制除delete替换replace插入insertstring管理char*所分配的内存不用担心复制越界和取值越界等由类内部进行负责2.string构造函数构造函数原型示例#include iostream using namespace std; //string构造函数 void test01() { string s1; //默认构造 const char *str hello world; string s2(str); //把c_string转换成了string cout s2 s2 endl; //s2 hello world string s3(s2); cout s3 s3 endl; //s3 hello world string s4(10,a); //使用拷贝构造函数 cout s4 s4 endl; //s4 aaaaaaaaaa } int main() { test01(); return 0; }总结string的多种构造方式没有可比性灵活使用即可3.string容器功能描述给string字符串进行赋值示例#include iostream using namespace std; //string赋值操作 void test01() { string str1; str1 hello world; cout str1 str1 endl; string str2; str2 str1; cout str2 str2 endl; string str3; str3 a; cout str3 str3 endl; string str4; str4.assign(hello C); cout str4 str4 endl; string str5; str5.assign(hello C,5); cout str5 str5 endl; string str6; str6.assign(str5); cout str6 str6 endl; string str7; str7.assign(10,w); cout str7 str7 endl; } int main() { test01(); return 0; }总结string的赋值方式很多operator这种方式是比较实用的4.string字符串拼接功能描述●实现在字符串末尾拼接字符串示例#include iostream using namespace std; //string字符串拼接 void test01() { string str1 我; str1 爱玩游戏; cout str1 str1 endl; str1 ; cout str1 str1 endl; string str2 LOL DNF; str1 str2; cout str1 str1 endl; string str3 I; str3.append( Love); cout str3 str3 endl; str3.append( Play Game,5); cout str3 str3 endl; //str3 I Love Play // str3.append(str2); // cout str3 str3 endl; // str3.append(str2,0,3); //只截取到LOL // cout str3 str3 endl; //str3 I Love PlayLOL str3.append(str2,4,3); //只截取了DNF cout str3 str3 endl; //str3 I Love PlayDNF } int main() { test01(); return 0; }总结字符串拼接的重载版本很多初学阶段记住几种即可5.string查找和替换功能描述●查找查找指定字符串是否存在●替换在指定的位置替换字符串示例#include iostream using namespace std; //string查找和替换 //1.查找 void test01() { // find 从左开始查找 string str1 abcdefgde; int pos str1.find(de); if(pos -1) { cout 未找到 endl; } else { cout pos pos endl; //pos 3 } //rfind 从右开始查找 pos str1.rfind(de); cout pos pos endl; //pos 7 } //2.替换 void test02() { string str1 abcdefgde; //从1号位置起3个字符替换为“1111” str1.replace(1,3,1111); cout str1 str1 endl; //str1 a1111efgde } int main() { //test01(); test02(); return 0; }总结●find查找是从左往后rfind从右往左●find找到字符串后返回查找的第一个字符位置找不到返回-1●replace在替换时要指定从哪个位置起多少个字符替换成什么样的字符串6.string字符串比较功能描述●字符串之间的比较比较方式●字符串比较是按字符的ASCII码进行对比返回 0返回 1返回 -1函数原型●int compare(const string s) const; //与字符串s比较●int compare(const char *s) const; //与字符串s比较示例#include iostream using namespace std; //string字符串比较 void test01() { string str1 xello; string str2 hello; if(str1.compare(str2) 0) { cout str1 str2 endl; }else if(str1.compare(str2) 0) { cout str1 str2 endl; } else { cout str1 str2 endl; } //str1 str2 } int main() { test01(); return 0; }总结字符串对比主要是用于比较两个字符串是否相等判断谁大谁小的意义并不是很大7.string字符存取string中单个字符存取方式有两种char operator[](int n); //通过O方式取字符char at(int n); //通过at方法获取字符示例#include iostream using namespace std; //string字符存取 void test01() { string str1 hello; //1.通过[]访问单个字符 for (int i 0; i str1.size(); i) { cout str1[i] ; } cout endl; //2.通过at()访问单个字符 for (int i 0; i str1.size(); i) { cout str1.at(i) ; } cout endl; //修改单个字符 str1[0] x; cout str1 str1 endl; //str1 xello str1.at(1) y; cout str1 str1 endl; //str1 xyllo } int main() { test01(); return 0; }总结string字符串中单个字符存取有两种方式利用[ ]或at8.string插入和删除功能描述●对string字符串进行插入和删除字符操作示例#include iostream using namespace std; //string插入和删除 void test01() { string str1 hello; //插入 str1.insert(1,111); cout str1 str1 endl; //str1 h111ello //删除 str1.erase(1,3); //从1号位置开始3个字符 cout str1 str1 endl; //str1 hello } int main() { test01(); return 0; }总结插入和删除的起始下标都是从0开始9.string子串功能描述从字符串中获取想要的子串函数原型string substr (int pos 0int n npos) const; //返回由pos开始的n个字符组成的字符串示例#include iostream using namespace std; //string求子串 void test01() { string str abcdefg; string subStr str.substr(1,3); cout subStr subStr endl; //subStr bcd } //实用操作 void test02() { string email hellogmail.com; //从邮件地址中获取用户名信息 string username email.substr(0,email.find()); cout 用户名 username endl; //用户名hello } int main() { test01(); test02(); return 0; }总结灵活的运用求子串功能可以在实际开发中获取有效的信息写到后面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧

相关文章:

C++ STL常用容器1——string容器

写在前面:⭐如果本篇博文对你有帮助,那就关注 点赞 收藏一下吧! 目录 1.string基本概念 2.string构造函数 3.string容器 4.string字符串拼接 5.string查找和替换 6.string字符串比较 7.string字符存取 8.string插入和删除 9.strin…...

量化后VQA准确率暴跌17.3%?——多模态模型INT4压缩的5个反直觉陷阱与工业级绕过策略

第一章:量化后VQA准确率暴跌17.3%?——多模态模型INT4压缩的5个反直觉陷阱与工业级绕过策略 2026奇点智能技术大会(https://ml-summit.org) 在真实产线部署中,将ViLT或BLIP-2等VQA主干模型从FP16压缩至INT4常导致准确率断崖式下跌——某金融…...

kali 软件源设置为国内站点配置详解

Kali Linux 国内镜像源配置指南备份原始源列表执行以下命令备份原始配置文件&#xff1a;sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak阿里云镜像源配置sudo tee /etc/apt/sources.list << EOF deb https://mirrors.aliyun.com/kali kali-rolling main non-…...

Blender3mfFormat插件深度解析:3D打印工作流中的关键技术实现与性能优化

Blender3mfFormat插件深度解析&#xff1a;3D打印工作流中的关键技术实现与性能优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印行业蓬勃发展的今天&#xf…...

JetBrains IDE评估期重置技术解析:跨平台配置清理与插件化实现方案

JetBrains IDE评估期重置技术解析&#xff1a;跨平台配置清理与插件化实现方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在JetBrains系列IDE开发环境中&#xff0c;评估期限制是开发者在学习和测试阶段面临…...

d3d9.dll文件丢失怎么办?教你免费下载修复方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

D3DCompiler_47.dll文件不存在 无法启动问题 教你免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

网盘直链下载助手:2025年最完整的跨平台云盘下载解决方案

网盘直链下载助手&#xff1a;2025年最完整的跨平台云盘下载解决方案 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 在当今数据驱动的时代&#xff0c;云存储服务已成为个人和企业数据管理的…...

【2026最硬核AI底层能力】:AIAgent元学习从理论到工业级部署的4道生死关卡与绕过方案

第一章&#xff1a;AIAgent元学习能力的范式革命与SITS2026定义 2026奇点智能技术大会(https://ml-summit.org) 从任务特化到认知自适应的跃迁 传统AI代理依赖于预设任务结构与静态策略库&#xff0c;而AIAgent的元学习能力标志着其可自主演化学习机制——在未见过的任务分布…...

深度解析开源音效引擎:Equalizer APO 5大实战技巧与专业配置方案

深度解析开源音效引擎&#xff1a;Equalizer APO 5大实战技巧与专业配置方案 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 作为一款开源的系统级音频处理引擎&#xff0c;Equalizer APO 通过创新的模…...

当AI Agent开始参与立法听证——SITS2026专家亲历的3个真实案例(含未公开会议纪要)

第一章&#xff1a;SITS2026专家&#xff1a;AIAgent的社会影响 2026奇点智能技术大会(https://ml-summit.org) AIAgent已从实验室原型演进为嵌入城市治理、医疗决策与教育服务的常态化社会基础设施。在SITS2026大会上&#xff0c;来自全球17个国家的跨学科专家指出&#xff…...

【Hadoop进阶】Hadoop生态圈实战指南:从核心组件到典型应用场景解析

1. Hadoop生态圈的核心价值与架构设计 第一次接触Hadoop的人常会被它庞大的生态体系吓到&#xff0c;但理解其设计哲学后就会发现非常直观。我在2013年第一次部署Hadoop集群时&#xff0c;最惊讶的是它用普通服务器就能搭建起PB级数据处理能力。Hadoop生态圈本质上是用分布式架…...

Agent 安全的真正战场:一文看懂大模型智能体的攻击面重构

今天很多人谈 Agent 安全&#xff0c;脑子里想到的还是老三样&#xff1a;提示注入、越狱、输出审核。但这篇论文真正想说的是&#xff0c;当大模型从“会回答”变成“会调用工具、会接外部知识、会自己规划任务”之后&#xff0c;安全问题就已经不再是单纯的内容安全问题&…...

【技术综述】世界模型演进图谱:从Dyna到Sora,理解与预测的双重变奏

1. 世界模型的起源与核心使命 1989年&#xff0c;强化学习先驱Richard Sutton在论文中首次提出Dyna架构时&#xff0c;可能没想到这个概念会成为人工智能理解世界的基石。当时他正在思考一个简单却深刻的问题&#xff1a;智能体如何像人类一样&#xff0c;通过想象来规划行动&…...

d3dx10_38.dll文件不存在 找不到 无法启动 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

尚硅谷大数据项目电商数仓6.0学习记录----数据仓库(中)

1. ODS层数据装载与自动化调度实战 在电商数仓项目中&#xff0c;ODS层作为数据仓库的第一站&#xff0c;承担着原始数据的"蓄水池"角色。我遇到过不少新手在数据装载环节踩坑&#xff0c;最常见的问题就是手动执行SQL导致数据不一致。这里分享一个真实案例&#xf…...

STM32高精度定时器(HRTIM1)实现倍频、定时器触发采样

STM32高精度定时器&#xff08;HRTIM1&#xff09;&#xff1a;精准定时与同步触发的强大引擎在嵌入式系统开发中&#xff0c;尤其是在数字电源、电机控制、照明及各类高精度PWM应用领域&#xff0c;定时器的精度和灵活性往往成为系统性能的关键瓶颈。STM32系列微控制器内置的高…...

C复习13(排序算法)

#技术笔记1.冒泡排序这个排序要能自己直接敲出来,由于每一轮有交换,导致数据就像冒泡泡一样,冒到数组的末尾,所以叫做冒泡排序。冒泡排序稳定&#xff0c;时间复杂度O(n^2),空间复杂度O(1) (这里就给出一种代码&#xff0c;从小到大的排序顺序冒了&#xff0c;后面都是按从小到…...

mysql5.7的rownumber写法

db2中的语句select * from ( select rownumber() over (order by a.stdcno) as num , a.id ,b.cuno from t1 a ,t2 b where a.id b.id ) as Amysql5.7中的语句select cast(row_num : row_num 1 as char) AS num , A.* from (select row_num :0) r,( select a.id, b.cuno fro…...

新概念英语第一册141_Sally s first train ride

Lesson 141: Sally’s first train ride 萨莉第一次乘火车旅行 Watch the story and answer the question Why was the mother embarrassed? Because Sally said the middle-aged lady was ugly.Key words and expressions excited 兴奋的get on 登上middle-age…...

为什么越来越多工程师选择英飞凌芯片?优势分析

作为一名在嵌入式硬件领域从业多年的工程师&#xff0c;我经常被问到这样一个问题&#xff1a;“英飞凌芯片好不好&#xff1f;值不值得在项目中优先考虑&#xff1f;”说实话&#xff0c;前几年我对这个问题还有些犹豫&#xff0c;但近几年随着项目经验的积累&#xff0c;尤其…...

昆仑通态屏幕制作(进阶篇)---动态交互设计(滑块控制与状态反馈)

1. 滑块控制的动态联动实现 在工业控制场景中&#xff0c;滑块是最直观的交互控件之一。昆仑通态屏幕的滑块控制功能&#xff0c;可以实现对设备参数的精细调节。比如控制电机转速、调节温度设定值等场景&#xff0c;都需要滑块输入与其他显示元素的动态联动。 1.1 滑块与进度…...

Blender 3MF插件终极指南:5步实现3D打印工作流优化

Blender 3MF插件终极指南&#xff1a;5步实现3D打印工作流优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat插件是Blender生态系统中专为3D打印工作流…...

相机照片详细参数怎么修改?4款工具,新手零失误

拍好的照片参数不对真的很糟心&#xff01;要么光圈显示错了&#xff0c;要么ISO、焦距乱标&#xff0c;相机型号还可能被搞错。想改却找不到简单的工具&#xff0c;要么软件太复杂&#xff0c;要么改完参数不生效&#xff0c;甚至把原图画质搞坏了。其实用对工具超简单&#x…...

如何修改图片的exif信息?6款工具,新手也能秒会

一、什么是EXIF信息&#xff1f;为什么要修改&#xff1f;EXIF信息就像图片的"身份证"&#xff0c;记录着拍摄时的详细数据&#xff0c;比如相机型号、拍摄时间、GPS位置、光圈快门等参数。平时发朋友圈、传文件时&#xff0c;如果不注意这些信息&#xff0c;可能会不…...

打造你的私人游戏云:Sunshine串流服务器从零到精通

打造你的私人游戏云&#xff1a;Sunshine串流服务器从零到精通 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为游戏设备限制而烦恼吗&#xff1f;想在任何地方都能畅玩你的P…...

874653

867453...

sdu软件学院创新实训(三)

基于lx同学构建的原型系统&#xff0c;进行了两次迭代 原型系统情况 队友搭建起了基本的后端springboot和langchain4j框架&#xff0c;以及小程序前端。 实现了对大模型的基本调用问答。完成milvus向量数据库的连接。 待解决的问题&#xff1a; 原型系统出于测试&#xff0c;显…...

“怪奇物语物流假设”:当交通被转移到另一个世界

在《怪奇物语》中&#xff0c;颠倒世界作为现实世界的镜像维度&#xff0c;始终以一种危险而不可控的形式存在&#xff1a;它与现实重叠&#xff0c;却又充满腐败与入侵性。然而&#xff0c;如果暂时搁置这种叙事中的恐怖属性&#xff0c;我们可以提出一个反直觉的问题——如果…...

HTML----列表与表格

一、列表标签1.<ul>:无序列表标签&#xff0c;用来放没有先后顺序的并列内容2.<ol>:有序列表标签&#xff0c;用来存放有明确先后顺序的步骤内容3.<li>:列表项&#xff0c;不管是<ul>还是<ol>里面都只能放.<li>&#xff0c;不能直接写文字…...