c++学习第十三讲---STL常用容器---string容器

news2024/12/29 11:01:52

string容器:

一、string的本质:

string和char*的区别:

char*是一个指针
string是一个类,封装了char*,管理这个字符串,是char*的容器。

二、string构造函数:

string() ;                            //空字符串
string(const char* s) ;       //用字符串s初始化
string(const string& str) ;  //拷贝构造
string(int n, char c) ;         //用n个字符c初始化

	string str1;
	char s[12] = "hello world";
	string str2(s);
	string str3(str2);
	string(10, 'a');

三、string赋值操作:

(1)通过 = 重载赋值:

string& operator=(const char* s);     //用字符串s赋值

string& operator=(const string& s);  //用字符串s赋值

string& operator=(char c);                //用字符c赋值

	char s[12] = "hello world";
	string str1 = s;
	string str2 = str1;
	string str3;
	str3 = 'a';

(2)通过 assign 函数赋值:

string& assign(const char* s);          //用字符串s赋值

string& assign(const char* s, int n); //用字符串s前n个字符赋值

string& assign(const string& s);       //用字符串s赋值

string& assign(int n, char c);            //用n个字符c赋值

	string str1;
	str1.assign("hello world");
	str1.assign("hello world",5);
	string str2;
	str2.assign(str1);
	str2.assign(10, 'a');

四、string的拼接:

(1)通过 += 重载拼接:

string& operator+= (const char* str) ;

string& operator+= (const char c) ;

string& operator+= (const string& str) ;

	string str1 = "hello ";
	str1 += "world";
	str1 += '!';
	string str2 = "haha ";
	str1 += str2;

(2)通过 append 函数拼接:

string& append(const char* s) ;

string& append(const char* s, int n) ;               //把字符串s的前n个字符连接到当前字符串结尾

string& append(const string& s) ;

string& append(const string& s, int pos, int n) ;//字符串s从pos开始的n个字符连接到字符串结尾
(注:字符串下标从0开始)

	string str1 = "hello";
	str1.append(" ");
	str1.append("world", 1);
	string str2 = "or";
	str1.append(str2);
	str1.append("world", 3, 2);
	cout << str1 << endl;

五、string的查找和替换:

(1)查找:find 和 rfind 函数

注:(1)查找函数返回值:找到返回位置,没找到返回 -1。

       (2)rfind从右往左查找,find从左往右查找

(2)替换:replace 函数

	string str1 = "abcdefg";
	int pos = str1.find("de");//3
	str1.replace(1, 2, "aa");

六、string的比较:compare 函数

比较方式:逐个按ASCII码值进行对比。

=:返回 0

>:返回 1

<:返回 -1

int compare(const string& s) const;

	cout << str[0] << endl;

int compare(const char* s) const;

	string str1 = "abc";
	string str2 = "abd";
	cout << str1.compare(str2) << endl;
	cout << str1.compare("abd") << endl;

七、string的取用:

(1)通过 [ ] 重载取用

	cout << str[0] << endl;

(2)通过 at 函数取用

char& at (int n);

	cout << str.at(0) << endl;

八、字符串插入和删除:

string& insert (int pos, const char* s);        //在指定位置插入字符串s

string& insert (int pos, const string& str);   //在指定位置插入字符串s

string& insert (int pos, int n, char c);          //在指定位置插入n个字符c

string& erase (int pos, int n = npos);          //删除从pos开始的n个字符

	string str1 = "world";
	str1.insert(1, "111");
	str1.erase(1, 3);

九、string子串:

功能:从字符串中获取想要的子串。

string substr (int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串

	string str = "abcdef";
	cout << str.substr(1, 3) << endl;

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Swiper容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Swiper容器组件 滑块视图容器&#xff0c;提供子组件滑动轮播显示的能力。…

独享http代理安全性是更高的吗?

不同于共享代理&#xff0c;独享代理IP为单一用户提供专用的IP&#xff0c;带来了一系列需要考虑的问题。今天我们就一起来看看独享代理IP的优势&#xff0c;到底在哪里。 我们得先来看看什么是代理IP。简单来说&#xff0c;代理服务器充当客户机和互联网之间的中间人。当你使用…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次&#xff0c;每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…

GitHub 一周热点汇总第7期(2024/01/21-01/27)

GitHub一周热点汇总第7期 (2024/01/21-01/27) &#xff0c;梳理每周热门的GitHub项目&#xff0c;离春节越来越近了&#xff0c;不知道大家都买好回家的票没有&#xff0c;希望大家都能顺利买到票&#xff0c;一起来看看这周的项目吧。 #1 rustdesk 项目名称&#xff1a;rust…

Redis 面试题 | 15.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

make: *** No rule to make target ‘clean‘. Stop.

项目场景&#xff1a; 在Ubuntu下编写makefile文件编译的时候,出现make: *** No rule to make target ‘clean’. Stop. 问题描述 make: *** No rule to make target ‘clean’. Stop. 解决方案&#xff1a; 原本我makefile文件的名字是MakeFile , 把它改为makefile以后完美运…

再学http

HTTP状态码 1xx 信息性状态码 websocket upgrade 2xx 成功状态码 200 服务器已成功处理了请求204(没有响应体)206(范围请求 暂停继续下载) 3xx 重定向状态码 301(永久) &#xff1a;请求的页面已永久跳转到新的url302(临时) &#xff1a;允许各种各样的重定向&#xff0c;一般…

FlashInternImage实战:使用 FlashInternImage实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

利用STM32CubeMX和Keil模拟器,3天入门FreeRTOS(5.3) ——递归锁

前言 &#xff08;1&#xff09;FreeRTOS是我一天过完的&#xff0c;由此回忆并且记录一下。个人认为&#xff0c;如果只是入门&#xff0c;利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后&#xff0c;再去学习网上的一些其他课程也许会简单很多。 &#xff08;2&am…

物联网协议Coap之C#基于Mozi的CoapClient调用解析

目录 前言 一、CoapClient相关类介绍 1、CoapClient类图 2、CoapClient的设计与实现 3、SendMessage解析 二、Client调用分析 1、创建CoapClient对象 2、实际发送请求 3、Server端请求响应 4、控制器寻址 总结 前言 在之前的博客内容中&#xff0c;关于在ASP.Net Co…

循序渐进,学会用pyecharts绘制桑基图

循序渐进&#xff0c;学会用pyecharts绘制桑基图 桑基图介绍 桑基图是比较冷门的可视化图形&#xff0c;知道的人不多&#xff0c;但它的可视化效果很惊艳&#xff0c;以后肯定会有越来越多的人使用&#xff0c;我平时使用桑基图&#xff0c;主要是用其绘制可视化图形做PPT。…

签到业务流程

1.技术选型 Redis主写入查询&#xff0c;Mysql辅助查询&#xff0c;传统签到多数都是直接采用mysql为存储DB,在大数据的情况下数据库的压力较大.查询速率也会随着数据量增大而增加.所以在需求定稿以后查阅了很多签到实现方式,发现用redis做签到会有很大的优势.本功能主要用到r…

JVM系列——基础知识

Java运行区域 程序计数器&#xff08;Program Counter Register&#xff09; 程序计数器是一块较小的内存空间&#xff0c;它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里[1]&#xff0c;字节码解释器工作时就是通过改变这个计数器的值来选取下一…

STM正点mini-跑马灯

一.库函数版 1.硬件连接 &#xff27;&#xff30;&#xff29;&#xff2f;的输出方式&#xff1a;推挽输出 &#xff29;&#xff2f;口输出为高电平时&#xff0c;P-MOS置高&#xff0c;输出为&#xff11;&#xff0c;LED对应引脚处为高电平&#xff0c;而二极管正&#…

[Tomcat] [从安装到关闭] MAC部署方式

安装Tomcat 官网下载&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 配置Tomcat 1、输入cd空格&#xff0c;打开Tomca目录&#xff0c;把bin文件夹直接拖拉到终端 2、授权bin目录下的所有操作&#xff1a;终端输入[sudo chmod 755 *.sh]&#xff0c;回车 …

HCS-华为云Stack-FusionSphere

HCS-华为云Stack-FusionSphere FusionSphere是华为面向多行业客户推出的云操作系统解决方案。 FusionSphere基于开放的OpenStack架构&#xff0c;并针对企业云计算数据中心场景进行设计和优化&#xff0c;提供了强大的虚拟化功能和资源池管理能力、丰富的云基础服务组件和工具…

C++类和对象——深拷贝与浅拷贝详解

目录 1.深拷贝和浅拷贝是什么 2.案例分析 完整代码 1.深拷贝和浅拷贝是什么 看不懂没关系&#xff0c;下面有案例分析 2.案例分析 浅拷贝可能会导致堆区的内存重复释放 一个名为person的类里面有年龄和指向身高的指针这两个成员。 当我们执行到person p2&#xff08;p1&am…

翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一

随着 OpenAI 在多模态方面的最新进展&#xff0c;想象一下将这种能力与视觉理解相结合。 现在&#xff0c;您可以在 Streamlit 应用程序中使用 GPT-4 和 Vision&#xff0c;以&#xff1a; 从草图和静态图像构建 Streamlit 应用程序。帮助你优化应用的用户体验&#xff0c;包…

深度学习-使用Labelimg数据标注

数据标注是计算机视觉和机器学习项目中至关重要的一步&#xff0c;而使用工具进行标注是提高效率的关键。本文介绍了LabelImg&#xff0c;一款常用的开源图像标注工具。用户可以在图像中方便而准确地标注目标区域&#xff0c;为训练机器学习模型提供高质量的标注数据。LabelImg…

【VB测绘程序设计】案例8——IF选择结构练习排序(附源代码)

【VB测绘程序设计】案例6——IF选择结构练习排序(附源代码) 文章目录 前言一、界面显示二、程序说明三、程序代码四、数据演示总结前言 本文主要掌握Val()函数转换,inputBox函数、IF条件句的练习,输入3个数,按大到小排序并打印。 一、界面显示 二、程序说明 利用inpu…