【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;//创建空字符串,调用无参构造函数cout << "str1 " << s1 << endl;//什么都不输出const char* str "…...
SSH无法连接kali,拒绝密码
1,cd /etc/ssh 2,systemctl start ssh.server 3,vim /etc/ssh/sshd_config 将黄色文字改成这样 4,systemctl restart ssh 然后去连接就好了...
竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习
文章目录 0 简介1 课题背景🚩 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率(Accuracy)3.2 精确率(Precision)和召回率(Recall)3.3 平均精…...
redis 数据结构(一)
Redis 为什么那么快 redis是一种内存数据库,所有的操作都是在内存中进行的,还有一种重要原因是:它的数据结构的设计对数据进行增删查改操作很高效。 redis的数据结构是什么 redis数据结构是对redis键值对值的数据类型的底层的实现,…...
【高频面试题】JVM篇
文章目录 一、JVM组成1.什么是程序计数器2.什么是Java堆?3.能不能介绍一下方法区(元空间)4.你听过直接内存吗5.什么是虚拟机栈6.垃圾回收是否涉及栈内存?7.栈内存分配越大越好吗?8.方法内的局部变量是否线程安全?9.什么…...
第十三次CCF计算机软件能力认证
第一题:跳一跳 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的…...
无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)
在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习ÿ…...
【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,里面自带visual assist配色,配色截图如下: 直接在plugins里面进行搜索或者在插件home page下载后进行安装均可。 总算找到一统vscode 和goland二者优势的插件了。...
人工智能面试常识-10
目录 1. 人工智能的常见用途和应用有哪些? 2. 什么是智能代理,它们如何在人工智能中使用?...
Android JNI开发从0到1,java调C,C调Java,保姆级教程详解
前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 第一步首先配置Android studio的NDK开发环境,首先在Android studio中下载NDK…...
STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用
文章目录: 一:LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二:蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三࿱…...
创建型模式 (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…...
【脚踢数据结构】队列(顺序和链式)
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔&…...
linux添加磁盘
一、linux虚拟机添加一块新的硬盘 四步: (1) (2)为硬盘进行分区 (3)初始化硬盘分区 (4)挂载 在虚拟机上添加一块硬盘 (1)、 虚拟机添加一块新的硬盘作为数据盘 (2) ls…...
图片懒加载
什么是图片懒加载? 懒加载也叫做延迟加载、按需加载,指的是在长网页中延迟加载图片 数据,是一种较好的网页性能优化的方式。在比较长的网页或应用中, 如果图片很多,所有的图片都被加载出来,而用户只能看到可…...
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下实现的过程,Ubuntu采用22.04 安装multipass后,在卓面右下角Open shell 就可以链接默认实例Primary,当然如果你有多个虚拟机,可以针对不同内容单独建立终端的链接,而本文仅仅用Primary来说明。 …...
Webpack5 core-js和babel-loader区别和用法
文章目录 core-js是什么,有什么用?为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么,有什么用? core-js是一个流行的JavaScript库,它提供了对新的JavaScript特性、API…...
软考高级架构师——5、系统规划分析与设计方法
系统计划主要用于描述从项目提出、选择到确立的过程,包括系统项目的提出与可行性 分析,系统方案的制订、评价和改进,新旧系统的分析和比较,以及现有软件、硬件和数据 资源的有效利用等问题。 1、项目的提出与选择 项目的立项目标…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
codeforces C. Cool Partition
目录 题目简述: 思路: 总代码: https://codeforces.com/contest/2117/problem/C 题目简述: 给定一个整数数组,现要求你对数组进行分割,但需满足条件:前一个子数组中的值必须在后一个子数组中…...
可视化图解算法48:有效括号序列
牛客网 面试笔试 TOP101 | LeetCode 20. 有效的括号 1. 题目 描述 给出一个仅包含字符(,),{,},[和],的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列&…...
