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

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");//3str1.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.mzph.cn/news/652731.shtml

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

相关文章

C#常见内存泄漏

背景 在开发中由于对语言特性不了解或经验不足或疏忽&#xff0c;往往会造成一些低级bug。而内存泄漏就是最常见的一个&#xff0c;这个问题在测试过程中&#xff0c;因为操作频次低&#xff0c;而不能完全被暴露出来&#xff1b;而在正式使用时&#xff0c;由于使用次数增加&…

STM32之IIC总线控制ATC24C04

一、存储器介绍 1、电子密码存储概述 单片机的电子密码存储是一种将密码信息以电子形式存储在单片机内部的技术。它通常用于需要保护敏感信息或限制访问权限的应用程序&#xff0c;如安全系统、门禁系统、电子锁等。 电子密码存储可以通过多种方式实现&#xff0c;以下是其中…

Linux内核进程管理

什么是进程 进程的概念 进程是处于执行期的程序和他所占用资源的总称。进程就是运行的代码&#xff0c;进程的声明从代码开始运行那一刻开始&#xff1b;单纯的程序并非是是一个进程&#xff0c;一个程序也可能不只包含一个进程。 进程和线程的区别&#xff0c;与联系 线程…

Redis常用数据类型--String

String 常用命令SETGETMGETMSETSETNXINCR/DECRINCRBY/DECRBYINCRBYFLOATAPPENDGETRANGESETRANGESTRLEN 内部编码典型应用场景 常用命令 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;⽆论原来的数据类型是什么。之 前关于此 k…

mysql8安装基础操作(一)

一、下载mysql8.0 1.查看系统glibc版本 这里可以看到glibc版本为2.17&#xff0c;所以下载mysql8.0的版本时候尽量和glibc版本对应 [rootnode2 ~]# rpm -qa |grep -w glibc glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 glibc-common-2.17-222.el7.x86_64 gl…

.NET高级面试指南专题三【线程和进程】

在C#中&#xff0c;线程&#xff08;Thread&#xff09;和进程&#xff08;Process&#xff09;是多任务编程中的重要概念&#xff0c;它们用于实现并发执行和多任务处理。 进程&#xff08;Process&#xff09;&#xff1a; 定义&#xff1a; 进程是正在运行的程序的实例&…

C#,数据检索算法之插值搜索(Interpolation Search)的源代码

数据检索算法是指从数据集合&#xff08;数组、表、哈希表等&#xff09;中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供插值搜索&#xff08;Interpolation Search&#xff09;的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.…

CSS color探索

CSS 颜色探索 在 CSS 的世界里&#xff0c;颜色为网页元素赋予了丰富的视觉效果。通过预定义的颜色名称、RGB、HEX、HSL&#xff0c;以及支持透明度的 RGBA 和 HSLA&#xff0c;我们可以创造出各种吸引人的设计。接下来&#xff0c;我们将通过示例代码来深入了解这些颜色应用。…

kafka-顺序消息实现

kafka-顺序消息实现 场景 在购物付款的时候&#xff0c;订单会有不同的订单状态&#xff0c;对应不同的状态事件&#xff0c;比如&#xff1a;待支付&#xff0c;支付成功&#xff0c;支付失败等等&#xff0c;我们会将这些消息推送给消息队列 &#xff0c;后续的服务会根据订…

CSS基础细节学习

目录 一.CSS--网页的美容师 二.语法规范及选择器的介绍 一.CSS--网页的美容师 CSS是层叠样式表( Cascading Style Sheets )的简称&#xff0c;有时我们也会称之为CSS样式表或级联样式表。 CSS是也是一种标记语言&#xff0c;CSS主要用于设置HTML页面中的文本内容(字体、大小…

log4j2 java api 入门介绍

概述 Log4j 2 API 提供了应用程序应该编码的接口&#xff0c;并提供了实现者创建日志实现所需的适配器组件。 虽然 Log4j 2 在 API 和实现之间被分解&#xff0c;但这样做的主要目的不是允许多个实现&#xff0c;尽管这当然是可能的&#xff0c;而是明确定义在“正常”应用程…

应急响应-内存分析

在应急响应过程中&#xff0c;除了上述几个通用的排查项&#xff0c;有时也需要对应响应服务器进行内存的提权&#xff0c;从而分析其中的隐藏进程。 内存的获取 内存的获取方法有如下几种&#xff1a; 基于用户模式程序的内存获取&#xff1b;基于内核模式程序的内存获取&a…

常用MQ产品的对比

常用MQ产品的对比 本文整理了常用MQ之间的对比&#xff0c;旨在帮助大家在实际项目中选择MQ产品。 消息队列对比参照表 注&#xff1a; 对照表来自&#xff1a;消息队列对比参照表 &#xff0c;对比维度比较全面&#xff0c;结果个人比较认同&#xff0c;强烈建议参考。 Rock…

Docker安装RcoketMQ

1、Docker安装RcoketMQ-4.9.4 在同级文件夹创建目录config&#xff0c;并在里面创建文件broker.conf&#xff0c;文件内容如下&#xff1a; brokerClusterNameDefaultCluster brokerNamebroker-a brokerId0 deleteWhen04 fileReservedTime48 brokerRoleASYNC_MASTER flushDis…

Python网络爬虫实战——实验5:Python爬虫之selenium动态数据采集实战

【实验内容】 本实验主要介绍和使用selenium库在js动态加载网页中数据采集的作用。 【实验目的】 1、理解动态加载网页的概念 2、学习Selenium库基本使用 3、掌握动态加载数据采集流程 【实验步骤】 步骤1理解动态加载网页 步骤2学习使用Selenium库 步骤3 采集河北政府采购…

Python初学者学习记录——python基础综合案例:数据可视化——地图可视化

一、基础地图使用 1、基础地图演示 2、基础地图演示——视觉映射器 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京市", 99),("上海市", 199),("湖南省", 2…

1 月 28日算法练习-前缀和

小郑的蓝桥平衡串 思路&#xff1a;把 L 看成 1&#xff0c;Q 看成 -1&#xff0c;利用前缀和来得到输入串的前缀子串中LQ 的和&#xff0c;利用前缀和差的性质得到子串&#xff0c;通过枚举看它是否平衡。 将L看做1&#xff0c;Q看做&#xff0d;1&#xff0c;只有当某个区间…

如何快速上手一个vue框架

安装nvm 下载nvm-setup.zip&#xff1a; https://github.com/coreybutler/nvm-windows/releases 解压安装nvm&#xff1a; 创建两个文件夹&#xff0c;一个是nvm的安装位置&#xff0c;另一个是node.js的下载位置。不需要配置环境变量和修改setting文件了 检查nvm是否安装成功…

不常见知识点汇总

目录 1.关于输入流&#xff08;cin&#xff09;1.1 cin.fail()1.2 cin.clear()1.3 cin.ignore() 随时补充&#xff01;&#xff01;&#xff01; 1.关于输入流&#xff08;cin&#xff09; 问题描述&#xff1a; int input 0; cin >> input; while (cin.fail()) {cin.…

Linux 增加 SWAP 空间

一、需求 通过阿里云启动项目时&#xff0c;使用Vuepress build编译静态页面时内存需要800MB&#xff0c;导致内存不够&#xff0c;因此考虑使用swap方式&#xff0c;置换一些内存资源存放swap磁盘。 [rootxxx myblog]# npm run docs:dev> myblog1.0.0 docs:dev > vuep…