C++:STL容器的学习-->string

请添加图片描述

C++:STL容器的学习-->string

        • 1. 构造方法
        • 2. string的赋值操作
        • 3. string字符串的拼接
        • 4. string 查找和替换
        • 5. string字符串的比较
        • 6. string字符存取
        • 7. string 插入和删除
        • 8. string截取

需要添加头文件#include <string>

1. 构造方法

string() 创建空的字符串

string(const char *s) 使用字符串s进行初始化

string(const string& str) 使用一个string对象初始化另外一个string对象

string(int n,char c) 使用n个字符c初始化

 int main() {string str1;cout << str1 << endl;char *a = "hello world!";string str2(a);cout << str2 << endl;string str3(str2);cout << str3 << endl;char b = '1';string str4(10,b);cout << str4 << endl;return 0;}
2. string的赋值操作

string& operator = (const char *s) char*类型字符串赋值给当前的字符串

string& operator = (const string &s) 把字符串s赋值给当前的字符串

string& operator = (char c) 字符赋值给当前的字符串

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赋值给当前的字符串

int main() {string str1 = "hello world!";cout << str1 << endl;string str2;str2 = str1;cout << str2 << endl;string str3;str3.assign(str2);cout << str3 << endl;string str4;str4.assign(str3,5);cout << str4 << endl;string str5;str5.assign(10,'a');cout << str5 << endl;return 0;}
3. 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)

string& append(const string &s,int pos,int n) 字符串s中从pos开始的n个字符连接到字符串结尾

int main() {string str1;str1 += "hello c++";cout << str1 << endl;string str2 = "hello";str2.append(" c++2");cout << str2 << endl;string str3 = "hello";str3.append(str1,5,10);cout << str3 << endl;return 0;}
4. string 查找和替换

find、rfind找不到目标字符串时返回-1

int find(const string &str,int pos=0) const 查找str第一次出现位置,从pos开始查找

int find(const char *s,int pos=0) const

int find(const char *s,int pos,int n) const 从pos位置查找s的前n个字符第一次位置

int find(const char c,int pos=0) const 查找字符c第一次出现的位置

int rfind(const string &str,int pos=0) const

int rfind(const char *s,int pos=0) const

int rfind(const char *s,int pos,int n) const

int rfind(const char c,int pos=0) const

string& replace(int pos,int n,const string & str) 替换从pos开始的n个字符为字符串str

string& replace(int pos,int n,const char *s) 替换从pos开始的n个字符为字符串s

int main() {string str1 = "hello C++ C++";int pos = str1.find("C++");cout << pos << endl;pos = str1.rfind("C++");cout << pos << endl;cout << str1.replace(6,3,"Python")<< endl;return 0;
}
5. string字符串的比较

按字符的ASCII码进行对比
返回 0、1、-1

int compare(const string &s) const 与字符串s进行比较
int compare(const char *s) const 与字符串s进行比较

int main() {string str1 = "c++",str2 = "c++";cout << str1.compare(str2) << endl;return 0;
}
6. string字符存取

string单个字符存取方式有两种

char& operator[](int n) 通过[]方式存取字符

char& at(int n) 通过at方式获取字符


int main() {string str1 = "hello world!";for (int i = 0; i < str1.size(); ++i) {cout << str1[i] << " " << str1.at(i)<<endl;}str1[0] = 'e';str1.at(1) = 'h';cout << str1 << endl;return 0;
}
7. string 插入和删除

string& insert(int pos,const char *s) 插入字符串

string& insert(int pos,const string& str)

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

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

int main() {string str1 = "hello";str1.insert(5," C++");cout << str1 << endl;str1.insert(5,5,'1');cout << str1 << endl;str1.erase(5,5);cout << str1 << endl;return 0;
}
8. string截取

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

int main() {string str1 = "hello C++";cout << str1.substr(5,4) << endl;return 0;
}

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

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

相关文章

C++学习/复习6---内存管理(数据的位置/大小)/new、delete/内存相关面试题(malloc与new/内存泄漏)

一、内存中区域 1.不同数据的存储位置 2.数据占用内存大小 二、动态内存函数 三、new与delete 1.操作内置类型 2.操作自定义类型 四、operator new与operator delete 1.底层源码&#xff08;malloc/free&#xff09; 2.内置/自定义与构造和析构 3.举例 五、定位new表达式 1.举…

使用 Django 和 RabbitMQ 构建高效的消息队列系统

文章目录 RabbitMQ 简介Django 中使用 RabbitMQ总结与拓展 在现代的 Web 应用程序开发中&#xff0c;构建一个高效的消息队列系统变得越来越重要。使用消息队列可以帮助我们解耦系统中不同模块的任务&#xff0c;并提高系统的性能和可扩展性。本文将介绍如何结合 Django 和 Rab…

LeetCode994腐烂的橘子

题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a;值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没…

C++ std::reference_wrapper:让引用更强大

std::reference_wrapper 的通俗易懂解释 一、简介二、std::reference_wrapper 的初衷三、常用示例3.1、与 make_pair 和 make_tuple 一起使用3.2、引用容器3.3、通过 std::thread 按引用传递参数给启动函数3.4、引用作为类成员3.5、按引用传递函数对象3.6、与绑定表达式一起使用…

重新安装 Windows 10/11 后如何恢复丢失的数据?

“嗨&#xff0c;我的 Windows 10/11 崩溃了&#xff0c;所以我不得不重新安装它。我使用 USB 可启动驱动器重新安装了操作系统。但是&#xff0c;重新安装后&#xff0c;C 盘上的所有先前文件都丢失了。有什么方法可以恢复丢失的文件吗&#xff1f;” - 孙雯 在大多数情况下&…

软考 系统架构设计师系列知识点之SOME/IP与DDS(3)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之SOME/IP与DDS&#xff08;2&#xff09; 本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#…

day16--集合进阶(Set、Map集合)

day16——集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set ne…

数组-两个升序数组中位数

一、题目描述 二、解题思路 (一).基本思想&#xff1a; 如果列表总长度allsize( arr1.size()arr2.size() ) 为奇数时&#xff0c;中位数位置应该在两个列表排序后的第 allsize/2 位置处&#xff0c;如果allsize为偶数&#xff0c;中位数应该取 (allsize/2)-1 和 allsize/2 的…

【Python】 如何在Python中设置环境变量?

基本原理 在Python中&#xff0c;环境变量是一种存储系统或应用程序配置信息的方式&#xff0c;它们可以被操作系统或应用程序访问。环境变量通常用于配置应用程序的行为&#xff0c;例如指定数据库的连接字符串、API密钥、文件路径等。 Python提供了几种方法来设置和访问环境…

心电信号降噪方法(滤波器/移动平均/小波等,MATLAB环境)

对于一个正常的、完整的心动周期&#xff0c;对应的心电图波形如下图所示&#xff0c;各个波形都对应着心脏兴奋活动的生理过程&#xff0c;包含P波&#xff0c;PR段&#xff0c;QRS波群&#xff0c;ST段&#xff0c;T波&#xff0c;U波。 &#xff08;1&#xff09;P波心电图中…

OpenBMC相关的网站

openbmc官方网站 https://github.com/openbmchttps://github.com/openbmc Dashboard [Jenkins]https://jenkins.openbmc.org/ https://gerrit.openbmc.org/Gerrit Code Reviewhttps://gerrit.openbmc.org/ Searchhttps://grok.openbmc.org/ openbmc参考网站 https://www.c…

R实验 正交试验设计与一元线性回归分析

实验目的&#xff1a; 掌握正交试验设计记号的意义&#xff1b;掌握正交试验设计的直观分析和方差分析&#xff1b;掌握一元线性回归模型的相关概念&#xff1b;掌握最小二乘法的思想&#xff1b;掌握一元线性回归方程的显著性检验和预测。 实验内容&#xff1a; &#xff11;…

C++ day1 作业练习

整理思维导图 定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream> #include <cstring>using namespace std; namespace my_space {string s1; }void show() {cout<…

NASA数据集——严格校准的臭氧(O3)、甲醛(HCHO)、二氧化碳(CO2)和甲烷(CH4)混合比,以及包括三维风在内的气象数据

Alpha Jet Atmopsheric eXperiment Meteorological Measurement System (MMS) Data 阿尔法喷气式大气实验气象测量系统&#xff08;MMS&#xff09;数据 简介 Alpha Jet Atmospheric eXperiment (AJAX) 是美国国家航空航天局艾姆斯研究中心与 H211, L.L.C. 公司的合作项目&a…

SpringSecurity6从入门到实战之引言和基本概念

SpringSecurity6从入门到实战之引言和基本概念 前言 在当今数字化时代&#xff0c;随着网络应用的日益普及&#xff0c;保护用户数据和系统安全变得至关重要。作为Java开发社区的中坚力量&#xff0c;Spring框架提供了一整套解决方案来构建企业级应用程序。然而&#xff0c;随…

APM2.8飞控

ArduPilotMega 主控可应用于 固定翼、直升机、多旋翼、地面车辆 APM2.8飞控供电有两种 1.电流计供电&#xff0c; 2.带BEC&#xff08;稳压功能&#xff09;的电调供电 ArduPilotMega 内部的硬件结构图&#xff1a; 调试时&#xff0c;不要使用向导&#xff0c;由于向导功能不…

[GDB] GDB调试

目录 一 简介 二 功能: 三 命令: 四 调试准备: 五 开始调试: 5.1 添加断点&#xff1a; 5.2 条件编译 5.3 断点查看 5.4 断点删除: 5.5 查看源码 5.6 单步调试(逐过程)&#xff1a; 5.7 断点调试: 5.8 单步跟踪(逐语句): 5.9 调试过程&#xff1a; 5.9.1 开始调…

在CentOS 8上卸载与安装MySQL 8的详细步骤

关键词&#xff1a;MySQL 8安装、CentOS 8、YUM源配置、卸载MySQL、MySQL残留文件删除、首次登录MySQL临时密码、服务状态检查、MySQL社区服务器 阅读建议&#xff1a;本文适合需要在CentOS 8操作系统上部署最新MySQL 8数据库的系统管理员或开发者阅读。文中步骤简洁清晰&#…

ssm145基于java的电脑硬件库存管理系统+jsp

电脑硬件库存管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对电脑硬件库存信息管理混乱&…

【设计模式】创建型-抽象工厂模式

前言 在软件开发领域&#xff0c;设计模式是一种被广泛接受的解决方案&#xff0c;用于解决特定问题并提供可维护和可扩展的代码结构。抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是其中之一&#xff0c;它提供了一种方法来创建一系列相关或相互依赖的对象…