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

【C++】常用容器-string容器

1.string基本概念

2.string构造函数

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//string容器
void test01()
{string s1;//创建空字符串,调用无参构造函数cout << "str1 = " << s1 << endl;//什么都不输出const char* str = "hello world";string s2(str); //c_string转换成了stringcout << "str2 = " << s2 << endl;string s3(s2); //调用拷贝构造函数cout << "str3 = " << s3 << endl;string s4(10, 'a'); //使用n个字符c初始化cout << "str4 = " << s4 << endl;
}
//*************************************
int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述

3.string赋值操作

在这里插入图片描述

#include <iostream>
using namespace std;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(5, 'x');cout << "str7 = " << str7 << endl;
}
//*************************************
int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述

4.string字符串拼接

在这里插入图片描述

#include <iostream>
using namespace std;//string字符串拼接
//函数原型:
// string& operator+=(const char* str);            //重载+=操作符
// string& operator+=(const char c);               //重载+=操作符
// string& operator+=(const string& str);          //重载+=操作符
// string& append(const char *s);                  //把字符串S连接到当前字符串结尾
// string& append(const char *s,int n);            //把字符串S的前n个字符串连接到当前字符串结尾
// string& append(const string &s);                //同operator+=(const string& str)
// string& append(const string &s, int pos, int n);//字符串S中从pos开始的n个字符连接到字符串结尾
//********************************************************************************************void test01()
{// string& operator+=(const char* str);   //重载+=操作符string str1 = "我";str1 += "爱陶子";cout << "str1 = " << str1 << endl;// string& operator+=(const char c);               //重载+=操作符str1 += '!';cout << "str1 = " << str1 << endl;// string& operator+=(const string& str);          //重载+=操作符string str2 = " Miss Tao!";str1 += str2;cout << "str1 = " << str1 << endl;// string& append(const char *s);                  //把字符串S连接到当前字符串结尾string str3 = "I";str3.append(" love ");cout << "str3 = " << str3 << endl;// string& append(const char *s,int n);            //把字符串S的前n个字符串连接到当前字符串结尾str3.append("Tao! taozi", 4);cout << "str3 = " << str3 << endl;// string& append(const string &s);                //同operator+=(const string& str)str3.append(str2);cout << "str3 = " << str3 << endl;// string& append(const string &s, int pos, int n);//字符串S中从pos开始的n个字符连接到字符串结尾str3.append(str2, 6, 4);cout << "str3 = " << str3 << endl;
}int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述
在这里插入图片描述
不知道再查就好啦

5.string查找和替换

在这里插入图片描述

#include <iostream>
using namespace std;//string字符串的查找和替换//查找
void test01()
{string str1 = "abcdefgde";//findint pos = str1.find("de");if (pos == -1){cout << "未找到" << endl;}else{cout << "pos = " << pos << endl;}//rfindpos = str1.rfind("de");cout << "pos = " << pos << endl;//find和rfind的区别//find从左往右查找   rfind从右往左查找
}//替换
void test02()
{string str1 = "abcdefgde";str1.replace(1, 3, "1111"); //把第1到3位全部移除,将1111全部插入cout << "str1 = " << str1 << endl;
}int main() {//test01();test02();//**************************************system("pause");return 0;
}

《查找》的结果
在这里插入图片描述
《替换》的结果在这里插入图片描述

6.string字符串比较

在这里插入图片描述

#include <iostream>
using namespace std;//string字符串比较
void test01()
{string str1 = "hello";string str2 = "delao";int ret = str1.compare(str2);if (ret == 0){cout << "str1等于str2" << endl;}else if (ret > 0){cout << "str1大于str2" << endl;}else{cout << "str1小于str2" << endl;}
}
int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述

在这里插入图片描述

7.string字符存取

在这里插入图片描述

#include <iostream>
using namespace std;//string字符存取
void test01()
{string str = "hello";cout << "str = " << str << endl;//1、通过[]访问单个字符for (int i = 0; i < str.size(); i++){cout << str[i] << " ";}cout << endl;//通过at方式访问单个字符for (int i = 0; i < str.size(); i++){cout << str.at(i) << " ";}cout << endl;//修改单个字符str[0] = 'x';//xellocout << "str = " << str << endl;str.at(1) = 'x';//xxlocout << "str = " << str << endl;
}
int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述

在这里插入图片描述

8.string插入和删除

在这里插入图片描述

#include <iostream>
using namespace std;//字符串插入和删除
void test01()
{string str = "hello";//插入str.insert(1, "111");//h111ellocout << str << endl;//删除str.erase(1, 3); //从1号位置开始的3个字符cout << str << endl;}int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述
在这里插入图片描述

9.string子串

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//string子串截取
void test01()
{string str = "123456";string subStr = str.substr(1, 3);cout << "subStr = " << subStr << endl;//实用例子-从邮箱名提取用户信息string email = "wanghaha@163.com";int pos = email.find('@');string usrname = email.substr(0, pos);cout << "Name = " << usrname << endl;
}int main() {test01();//test02();//**************************************system("pause");return 0;
}

在这里插入图片描述

相关文章:

【C++】常用容器-string容器

1.string基本概念 2.string构造函数 #include <iostream> using namespace std;//string容器 void test01() {string s1;//创建空字符串&#xff0c;调用无参构造函数cout << "str1 " << s1 << endl;//什么都不输出const char* str "…...

SSH无法连接kali,拒绝密码

1&#xff0c;cd /etc/ssh 2,systemctl start ssh.server 3,vim /etc/ssh/sshd_config 将黄色文字改成这样 4&#xff0c;systemctl restart ssh 然后去连接就好了...

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…...

redis 数据结构(一)

Redis 为什么那么快 redis是一种内存数据库&#xff0c;所有的操作都是在内存中进行的&#xff0c;还有一种重要原因是&#xff1a;它的数据结构的设计对数据进行增删查改操作很高效。 redis的数据结构是什么 redis数据结构是对redis键值对值的数据类型的底层的实现&#xff0c…...

【高频面试题】JVM篇

文章目录 一、JVM组成1.什么是程序计数器2.什么是Java堆&#xff1f;3.能不能介绍一下方法区(元空间&#xff09;4.你听过直接内存吗5.什么是虚拟机栈6.垃圾回收是否涉及栈内存&#xff1f;7.栈内存分配越大越好吗&#xff1f;8.方法内的局部变量是否线程安全&#xff1f;9.什么…...

第十三次CCF计算机软件能力认证

第一题&#xff1a;跳一跳 近来&#xff0c;跳一跳这款小游戏风靡全国&#xff0c;受到不少玩家的喜爱。 简化后的跳一跳规则如下&#xff1a;玩家每次从当前方块跳到下一个方块&#xff0c;如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上&#xff0c;但没有跳到方块的…...

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 课程入口&#xff0c;感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习&#xff…...

【flask sqlalchmey】一次性将返回的列表对象或者 一行数据对象转成dict---flask-sqlalchemy输出json格式数据

def model_to_dict(object):return {c.name: getattr(object, c.name) for c in object.__table__.columns}#将一组数据转为list def scalars_to_list(object):return [model_to_dict(c) for c in object]class Sysdict(Base,SerializerMixin):__bind_key__ forest_fire_contr…...

goland插件推荐Rider UI Theme Pack

推荐一个goland配色插件Rider UI Theme Pack&#xff0c;里面自带visual assist配色&#xff0c;配色截图如下&#xff1a; 直接在plugins里面进行搜索或者在插件home page下载后进行安装均可。 总算找到一统vscode 和goland二者优势的插件了。...

人工智能面试常识-10

目录 1. 人工智能的常见用途和应用有哪些? 2. 什么是智能代理,它们如何在人工智能中使用?...

Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 第一步首先配置Android studio的NDK开发环境&#xff0c;首先在Android studio中下载NDK…...

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

文章目录&#xff1a; 一&#xff1a;LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二&#xff1a;蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三&#xff1…...

创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

玄子Share 设计模式 GOF 全23种 七大设计原则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWLAOFtO-1691793071647)(./assets/%E7%8E%84%E5%AD%90Share%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20GOF%20%E5%85%A823%E7%A7%8D%20%20%E4%B8%83%E…...

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…...

linux添加磁盘

一、linux虚拟机添加一块新的硬盘 四步&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;为硬盘进行分区 &#xff08;3&#xff09;初始化硬盘分区 &#xff08;4&#xff09;挂载 在虚拟机上添加一块硬盘 (1)、 虚拟机添加一块新的硬盘作为数据盘 (2) ls…...

图片懒加载

什么是图片懒加载&#xff1f; 懒加载也叫做延迟加载、按需加载&#xff0c;指的是在长网页中延迟加载图片 数据&#xff0c;是一种较好的网页性能优化的方式。在比较长的网页或应用中&#xff0c; 如果图片很多&#xff0c;所有的图片都被加载出来&#xff0c;而用户只能看到可…...

scope,deep穿透的实际应用

一.父组件代码 <template><div id"app"><h1 class"box"><pageName> </pageName></h1></div> </template><script> import pageName from "../src/components/pageName.vue"; export de…...

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程&#xff0c;Ubuntu采用22.04 安装multipass后&#xff0c;在卓面右下角Open shell 就可以链接默认实例Primary&#xff0c;当然如果你有多个虚拟机&#xff0c;可以针对不同内容单独建立终端的链接&#xff0c;而本文仅仅用Primary来说明。 …...

Webpack5 core-js和babel-loader区别和用法

文章目录 core-js是什么&#xff0c;有什么用&#xff1f;为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么&#xff0c;有什么用&#xff1f; core-js是一个流行的JavaScript库&#xff0c;它提供了对新的JavaScript特性、API…...

软考高级架构师——5、系统规划分析与设计方法

系统计划主要用于描述从项目提出、选择到确立的过程&#xff0c;包括系统项目的提出与可行性 分析&#xff0c;系统方案的制订、评价和改进&#xff0c;新旧系统的分析和比较&#xff0c;以及现有软件、硬件和数据 资源的有效利用等问题。 1、项目的提出与选择 项目的立项目标…...

egergergeeert惊艳效果:11张高细节服装纹理+发丝表现的插画作品

egergergeeert惊艳效果&#xff1a;11张高细节服装纹理发丝表现的插画作品 1. 作品展示&#xff1a;高精度服装与发丝细节 egergergeeert文生图镜像在角色插画创作中展现出惊人的细节表现力&#xff0c;特别是在服装纹理和发丝处理方面。以下是11张具有代表性的高质量作品展示…...

Rust的match中的模式覆盖检查与编译器在穷尽性验证中的智能推断

Rust语言以其强大的类型系统和内存安全性著称&#xff0c;而其中的模式匹配&#xff08;match&#xff09;机制更是其核心特性之一。match不仅能让代码逻辑更加清晰&#xff0c;还能通过编译器的穷尽性检查确保所有可能的情况都被处理。这种模式覆盖检查与编译器的智能推断相结…...

3步极速部署:通达信缠论量化插件实战指南

3步极速部署&#xff1a;通达信缠论量化插件实战指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 在瞬息万变的金融市场中&#xff0c;技术分析工具的质量直接影响交易决策的准确性。今天&#xff0c…...

杰理SDK开发-杰理之家-实现清除手机APP用户配置功能、重置参数

前言现在为止也开发了许多杰理TWS蓝牙耳机、音响项目SDK的案子&#xff0c;在调试案子时不断的向前辈们学习到了很多关于蓝牙音响、蓝牙TWS耳机专业的知识。想在这里做一个学习汇总&#xff0c;方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习&#xff1b;本章详细讲解杰理SD…...

Python高级应用系列(十):内存管理与性能优化——让你的Python飞起来

标签: Python | 性能优化 | 内存管理 | profiling | gc | 性能调优 字数: 约 4500 字 建议阅读时间: 14 分钟 前言 Python 程序慢、内存占用高,大多数情况下不是 Python 语言本身的问题,而是代码写法和数据结构选择的问题。一行不当的列表推导式、一个意外持有的对象引用…...

医用电气环境测试GB/T 14710-2009实战解读

做医疗器械注册、检测和研发的人&#xff0c;基本都绕不开 GB/T 14710-2009。它不只是一份合规标准&#xff0c;更是医用电气设备的环境适应性 “生存考试”&#xff0c;专门验证设备在医院、库房、运输途中能不能稳定扛住各种工况。标准把设备按气候环境和运输强度分成 Ⅰ、Ⅱ…...

告别单窗口!MPLAB X IDE多开与MCC配置冲突的保姆级解决方案

告别单窗口&#xff01;MPLAB X IDE多开与MCC配置冲突的保姆级解决方案 对于使用Microchip MCU进行嵌入式开发的工程师来说&#xff0c;MPLAB X IDE是日常工作中不可或缺的开发工具。然而&#xff0c;当我们需要同时处理多个项目、进行代码对比或调试时&#xff0c;IDE默认不支…...

Java响应式编程革命再升级(Loom协程×Virtual Threads×Reactive Streams三重融合白皮书)

第一章&#xff1a;Java响应式编程革命再升级&#xff1a;Loom协程Virtual ThreadsReactive Streams三重融合白皮书Java生态正经历一场静默而深刻的范式迁移——Project Loom的虚拟线程&#xff08;Virtual Threads&#xff09;不再仅是轻量级线程的替代方案&#xff0c;而是与…...

从电磁炮到磁悬浮:拆解导轨+导体模型,看懂前沿科技背后的高中物理

从电磁炮到磁悬浮&#xff1a;导轨导体模型如何驱动未来科技 想象一下&#xff0c;一枚炮弹无需火药就能以7倍音速飞出&#xff0c;或是一列列车悬浮在轨道上以600公里时速无声滑行——这些科幻场景已成现实&#xff0c;而它们的核心原理竟藏在高中物理课本里。当我们拆解电磁炮…...

数字IC版图新手避坑指南:以加法器为例,解决DRC/LVS错误和仿真毛刺

数字IC版图设计实战&#xff1a;从加法器案例拆解DRC/LVS错误与仿真毛刺的根治方案 第一次在Cadence Virtuoso里完成加法器版图时&#xff0c;看着Calibre报出的237个DRC错误和LVS窗口里密密麻麻的mismatch提示&#xff0c;我对着屏幕发呆了半小时——那些教科书上轻描淡写的&q…...