C++:string 类

在C++中定义一个 std::string 字符串可以采用以下几种方式:

1.使用字符串字面量初始化:
std::string str = "Hello, world!";
2.使用构造函数初始化:
std::string szStringB("Hello wolven");
3.使用重复字符初始化:
std::string szStringC(6, 'w');

无论采用哪种方式,都可以创建一个 std::string 类型的字符串。选择哪种方式取决于代码的需求和个人偏好。

string处理字符串的方法

std::string 类定义在 <string> 头文件中,它提供了一系列方法来操作字符串,例如计算长度、查找、插入、删除、比较等。

长度计算:length()
std::string szStringA = "Hello,world";
std::cout << "Length:" << szStringA.length() << std::endl;

字符串查找 find()
std::string szStringA = "Hello,world C++";
​
size_t pos = szStringA.find("C++");
​
if (pos != std::string::npos) {
    std::cout << "Found String Positon at:" << pos << std::endl;
}else{
    std::cout << "Not Found String" << std::endl;
}

使用 find 方法查找子字符串 "C++" 在 szStringA 中的位置,并将结果保存在变量 pos 中。如果 find 方法找到了子字符串,则返回子字符串在原字符串中的起始位置;如果没有找到,则返回 std::string::npos,表示未找到。最后,根据 pos 的值,输出相应的消息,指示是否找到了字符串。

字符串插入方法 insert()

1.插入单个字符: 使用 insert 方法可以在指定位置插入单个字符

std::string szStringA = "Hello,world C++";
szStringA.insert(5,1,'0');
std::cout << szStringA << std::endl;

在szStringA字符串的位置5插入一个'0'

输出结果:Hell0,world C++

2.插入字符串:使用 insert 方法可以在指定位置插入另一个字符串。

std::string szStringA = "Hello,world C++";
std::string szStringB(" Hello wolven");
szStringA.insert(15, szStringB);
std::cout << szStringA << std::endl;

在szStringA 字符串的位置15插入字符串 " Hello wolven"

输出结果:Hello,world C++ Hello wolven

3.插入部分子字符串:使用 insert 方法可以在指定位置插入另一个字符串的一部分。

std::string szStringA = "Hello,world C++";
std::string szStringB(" Hello wolven");
szStringA.insert(15, szStringB,0,6);
std::cout << szStringA << std::endl;

在位置15插入字符串 szStringB的子字符串位置0到6的位置也就是“ Hello”

输出结果:Hello,world C++ Hello

字符串删除方法 erase()

1.删除单个字符:删除指定位置的单个字符。

std::string szStringA = "Hello,world C++";
szStringA.erase(5,1);
std::cout << szStringA << std::endl;

删除szStringA字符串位置5的1个字符,即逗号

输出结果:Helloworld C++

2.删除子字符串:删除指定范围内的子字符串。

std::string szStringA = "Hello,world C++";
szStringA.erase(5,6);
std::cout << szStringA << std::endl;

删除szStringA字符串位置5开始算起的6个字符,即“,world”

输出结果:Hello C++

3.删除到字符串末尾:删除从指定位置到字符串末尾的所有字符。

std::string szStringA = "Hello,world C++";
szStringA.erase(5);

从位置5开始删除到字符串末尾的所有字符,即 ", world C++"

输出结果:Hello

字符串的比较方法 compare()

compare 方法返回一个整数,表示两个字符串的大小关系。如果字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回负数;如果第一个字符串大于第二个字符串,则返回正数。

std::string szStringA = "Hello,world C++";
std::string szStringB(" Hello wolven");

int res = szStringA.compare(szStringB);
if (res > 0) {
	std::cout << "szStringA > szStringB" << std::endl;
}
else if(res < 0){
	std::cout << "szStringA > szStringB" << std::endl;
}
else
{
	std::cout << "szStringA  =  szStringB" << std::endl;
}

输出结果:

在C++中,字符串比较大小通常是按照字典序进行的,也就是按照字符的ASCII值进行比较。这意味着,如果两个字符串的第一个字符不同,那么这两个字符串的大小比较就取决于它们第一个不同的字符的ASCII值。

字符串替换方法replace()

这个方法可以用于替换指定位置和长度的子字符串为另一个字符串。

std::string szStringA = "Hello,world C++";
std::string szStringB("wolven");

size_t pos = szStringA.find("C++");
if (pos != std::string::npos) {
	szStringA.replace(pos, 3, szStringB);
}

std::cout << szStringA << std::endl;

使用 find 方法查找字符串 szStringA 中子字符串 "C++" 的位置,并将结果保存在变量 pos 中。如果找到了 "C++",则执行以下操作:使用 replace 方法将字符串 szStringA 中从位置 pos 开始的 3 个字符(即 "C++")替换为字符串 szStringB("wolven")。最后,代码输出替换后的 szStringA

字符串拼接: + 加号操作符
std::string szStringA = "Hello,world C++";
std::string szStringB("wolven");

std::string szStringResult = szStringA + szStringB;
std::cout << szStringResult << std::endl;

加号运算符可以将两个字符串连接起来,并产生一个新的字符串。

在 C++ 中,+ 操作符不仅可以用于数值的加法,还可以用于字符串的拼接。这是因为 C++ 对于字符串类型 std::string 重载了 + 操作符,使其能够执行字符串的连接操作。

下一篇文章就来说一下运算符重载。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机入门(一)

1. 51单片机的基础介绍 2. RAM和ROM的区别 总体而言&#xff0c;RAM和ROM在计算机系统中起着不同的角色&#xff0c;RAM用于临时存储运行时数据&#xff0c;而ROM用于存储永久性的固件和系统程序。 3. 为什么叫51单片机 因为51系列单片机都是使用Intel 8031指令系统的单片机…

【链表——数据结构】

文章目录 1.单链表1.定义2.基本操作2.1.不带头结点2.2后插2.3前插2.4删除2.5按位查找2.6按值查找2.7求单链表长度2.8 建表 2.双链表1.初始化2.插入(后插)3.删除(后删)4.遍历 3.循环链表1.循环单链表2.循环双链表3.代码问题 4.静态链表1.简述基本操作的实现1.初始化3.删除某个结…

前端---Bootstrap---的下载和使用

目录 Bootstrap的下载 网页链接: 下载步骤: Bootstrap的使用 引用步骤: Bootstrap常用: Bootstrap-栅格系统 Bootstrap-组件 Bootstrap 是由 Twiter 公司开发维护的前端 U框架&#xff0c;它提供了大量编写好的 CSS 样式&#xff0c;允许开发者结合一定 HTML结构及JavaS…

二维码门楼牌管理应用平台建设:档案管理的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的构建背景二、九小场所档案管理的重要性三、二维码门楼牌管理应用平台在九小场所档案管理中的应用四、二维码门楼牌管理应用平台的优势与挑战五、结语 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台的建设已成…

《Fundamentals of Power Electronics》——三端电池的旋转、负载差分连接

以下是关于三端电池的旋转的相关知识点&#xff1a; Buck电路、Boost电路和Buck-Boost电路均包含一个与单刀单掷开关相连的电感。如下图所示。 将上图中的电感和开关网络视为一个标有a,b,c三端的基础电池。该电池在电源和负载之间有三种不同的连接方式。a-A b-B c-C连接方式组…

BERT一个蛋白质-季军-英特尔创新大师杯冷冻电镜蛋白质结构建模大赛-paipai

关联比赛: “创新大师杯”冷冻电镜蛋白质结构建模大赛 解决方案 团队介绍 paipai队、取自 PAIN AI&#xff0c;核心成员如我本人IvanaXu(IvanaXu GitHub)&#xff0c;从事于金融科技业&#xff0c;面向银行信用贷款的风控、运营场景。但我们团队先后打过很多比赛&#xf…

文件Tools工具 支持WORD/PDF/EXCEL/PDF等格式的转换软件

文件Tools工具 支持WORD/PDF/Excel/PDF等格式的转换软件 支持功能 Word转PDFWORD转EXCELWORD转EPUBPDF转WORDPDF转EXCELPDF转PPTPDF版本转换EXCEL转PDFEXCEL转WORDPDF转EXCELEPUB转WORDEPUB转PDFHTML转PDF&#xff08;需配置chromium&#xff09;点击查看配置教程简易二维码生…

TablePlus for Mac/Win:开启高效数据开发新纪元

在当今数字化时代&#xff0c;数据的重要性日益凸显。无论是企业还是个人&#xff0c;都需要一款强大而实用的本地原生数据开发软件来提升工作效率。而 TablePlus for Mac/Win 正是这样一款卓越的工具&#xff0c;它为用户带来了全新的体验&#xff0c;让数据开发变得更加轻松、…

Matlab实现CNN-BiLSTM模型,对一维时序信号进行分类

1、利用Matlab2021b训练CNN-BiLSTM模型&#xff0c;对采集的一维时序信号进行分类二分类或多分类 2、CNN-BiLSTM时序信号多分类执行结果截图 训练进度&#xff1a; 网络分析&#xff1a; 指标变化趋势&#xff1a; 代码下载方式&#xff08;代码含数据集与模型构建&#xff0…

go引入自建包名报错 package XXX is not in std和goland设置GO111MODULE提示冲突

首先在引入自建包的时候报错 查找网上的解决方法&#xff1a; 1、goland取消勾选Enable Go modules integration 2、set GO111MODULEoff 但是都没解决&#xff0c;而且更奇怪的是&#xff0c;我在cmd里面查看go env就显示set GO111MODULEoff 但是在goland里面的终端输入 go…

面试大厂,面试官问:为什么要使用盒模型?

1. 基础知识 什么是 CSS 盒模型 CSS 盒模型描述了页面中元素的布局和空间分配方式。每个元素都被看作是一个盒子&#xff0c;这个“盒子”由 4 个部分组成&#xff1a; 内容&#xff08;Content&#xff09;、内边距&#xff08;Padding&#xff09;、边框&#xff08;Borde…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.5, 汇编 led.s,第一次点亮LED灯

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Llama 3 安装使用方法

Llama3简介&#xff1a; llama3是一种自回归语言模型&#xff0c;采用了transformer架构&#xff0c;目前开源了8b和70b参数的预训练和指令微调模型&#xff0c;400b正在训练中&#xff0c;性能非常强悍&#xff0c;并且在15万亿个标记的公开数据进行了预训练&#xff0c;比ll…

读天才与算法:人脑与AI的数学思维笔记13_Coq证明助手

1. 计算机 1.1. 对于计算机来说&#xff0c;它就很擅长处理这种重复而机械且计算量庞大的任务 1.1.1. 在速度与准确性等方面&#xff0c;计算机是远超过手工计算的 1.2. 计算机只能执行指令&#xff0c;并无自主创造力 1.2.1. 想…

JavaScript 的基本术语大全

文章目录 1、概述2、基本术语2.1、有效负载 (Payload)2.2、ReadableStream2.3、模块系统2.4、DOM (Document Object Model)2.5、事件 (Events)2.6、活动委托 (Event Delegation)2.7、内容安全策略 (CSP)2.8、渐进增强和优雅降级2.9、JSON (JavaScript Object Notation)2.10、AJ…

绝地求生:竞技比赛RP占比改动详解

大好&#xff0c;我闲游盒&#xff01; 在上周29.1版本更新后&#xff0c;官方也发布了关于竞技比赛&#xff1a;RP的改动公告&#xff0c;这里就为大家简单讲解一下具体改动的地方~ 官方希望能够通过优化让RP、段位和竞技比赛更能准确的反馈出大家自身的实力。 第一项改动是在…

02.Kafka部署安装

1 Linux 安装 Kafka 1.1 安装前的环境准备 由于 Kafka 是用 Scala 语言开发的&#xff0c;运行在 JVM 上&#xff0c;因此在安装Kafka之前需要先安装JDK。 yum install java-1.8.0-openjdk* -y kafka 依赖 zookeeper&#xff0c;所以需要先安装 zookeeper。 wget https://ar…

5G图标显示分析

1、问题现象 MTK平台项目中出现一个5G图标显示问题&#xff0c;注册5G时&#xff0c;拨打电话&#xff0c;对比机图标显示回落到4G&#xff0c;测试机一直显示5G。 2、原因分析 2.1、NSA显示规则 根据GSMA协议&#xff0c;NSA架构下5G图标显示有如下4种. 2.2、Android中显示5G…

基于Springboot的甘肃旅游服务平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的甘肃旅游服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

idea的插件,反编译整个jar包

idea的插件&#xff0c;反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下&#xff1a;2.2 选中jar包&#xff0c;点出右键 3.不用插件&#xff0c;手动查看某一个java类3.1 选中jar包&#xff0c;点出右键 1.安装插件 1.1找到插…
最新文章