C++:string 类

news2024/11/26 18:30:31

在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.coloradmin.cn/o/1632103.html

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

相关文章

UE4内存优化

内存查看命令​ 可以通过Stat MemoryPlatform查看对应的内存信息 Total Virtual虚拟内存的总量 Available Virtual可用的虚拟内存 Total Physical 物理内存的总量 Available Physical 可用物理内存总量 Peak Used Virtual 表示应用程序或游戏在运行过程中达到的虚拟内存使用峰…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

常用的4个Linux Shell脚本,实现运维自动化的基础

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Linux的起源与发展 2、什么是Shell脚本 二、实…

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…

户外小型气象站

TH-QC10随着环境保护意识的日益增强&#xff0c;气象监测在环保工作中扮演着越来越重要的角色。户外小型气象站作为一种便携、高效的气象监测设备&#xff0c;为环保工作提供了有力的支持。本文将对户外小型气象站的功能、应用场景进行简要介绍。 一、户外小型气象站的功能 户…

第九届中国海洋大学信息安全竞赛 Re 睡Lite wp

还得自己查资料 相近的版本就行 可以找到一些字符&#xff0c;经过分析可以猜测sub_48就是类似sleep的减速函数 就算真用芯片也跑不出来&#xff0c;一直sleep 往下翻可以找到很多字符 拼在一起可以大致看出flag

操作系统——优先权算法c++实现

变量描述 测试数据 5 A 0 4 4 B 1 3 2 C 2 5 3 D 3 2 5 E 4 4 1 先来先服务算法 简述 该算法实现非常简单就是对到达时间排个序&#xff0c;然后依次进行即可&#xff0c;对结构体的sort进行了重载 代码 void FCFS() {//先来先服务算法std::cout<<"\n\t\t\t\t\…

快速生成个人信息测试数据

特点&#xff1a; 业务测试的数据比较多&#xff0c;苦于测试数据生成麻烦&#xff0c;用javascripthtmlcss快速生成页面并支持导出&#xff1b; 用途&#xff1a; 1、可用于频繁的功能测试&#xff1b; 2、可用于性能测试参数化&#xff1b; 3、可用于自动化测试参数&…

Python | Leetcode Python题解之第58题最后一个单词的长度

题目&#xff1a; 题解&#xff1a; class Solution:def lengthOfLastWord(self, s: str) -> int:ls[]for i in s.split():ls.append(i)return len(ls[-1])

二叉树理论和题目

二叉树的种类 在我们解题过程中二叉树有两种主要的形&#xff1a;满二叉树和完全二叉树。 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为 2 的结点&#xff0c;并且度为 0 的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4

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

Python绘制3D曲面图

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Python中绘制3D曲面图的艺术 在数据可视化的世界中&#xff0c;3D曲面图是一种强大的工…

OpenCV如何模板匹配

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何实现背投 下一篇 &#xff1a;OpenCV在图像中寻找轮廓 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 matchTemplate()搜索图像贴片和输入图像之间…

Python学习笔记------异常

当检测到错误时&#xff0c;Python解释器就无法继续执行了&#xff0c;反而出现一些错误提示&#xff0c;就是所谓异常&#xff08;bug&#xff09; 1、异常的捕获方法 任何程序运行过程中都可能出现异常&#xff0c;我们可以在力所能及的范围内&#xff0c;对可能出现的bug提…

家庭教育-家长指导手册

背景介绍 写这篇文章的动机&#xff1a;我在抖音上一个视频中看到孩子洗了碗&#xff0c;家长翻一本打印的册子&#xff0c;从里面找表扬的话。这个册子左侧写了孩子的行为&#xff0c;比如&#xff1a;洗碗&#xff0c;右边写了家长应该说的表扬的话。 所以&#xff0c;我寻思…

[论文笔记]SEARCHING FOR ACTIVATION FUNCTIONS

引言 今天带来另一篇激活函数论文SEARCHING FOR ACTIVATION FUNCTIONS的笔记。 作者利用自动搜索技术来发现新的激活函数。通过结合详尽的搜索和基于强化学习的搜索&#xff0c;通过实验发现最佳的激活函数 f ( x ) x ⋅ sigmoid ( β x ) f(x) x \cdot \text{sigmoid}(βx…

MOS(My Oracle Support)怎么用?Oracle DBA必备技能!

MOS简介 老Oracle DBAer都知道MOS的前身是Metalink&#xff0c;2012年MOS替换掉原有的Metalink平台&#xff1b;MOS是Oracle提供的新一代在线支持平台&#xff0c;MOS平台整合了以前的Metalink功能&#xff0c;并提供了更强大的功能和用户体验。它允许客户提交和跟踪技术支持…

ubuntu系统搭建pytorch环境详细步骤【笔记】

实践设备&#xff1a;华硕FX-PRO&#xff08;NVIDIA GeForce GTX 960M&#xff09; 搭建PyTorch环境的详细步骤如下&#xff1a; 1.安装Ubuntu系统&#xff1a; 下载Ubuntu的镜像文件并制作启动盘。将启动盘插入计算机&#xff0c;启动计算机并按照提示安装Ubuntu系统。 2.…

QT c++ 代码布局原则 简单例子

本文描述QT c widget代码布局遵循的原则&#xff1a;实中套虚&#xff0c;虚中套实。 本文最后列出了代码下载链接。 在QT6.2.4 msvc2019编译通过。 所谓实是实体组件&#xff1a;比如界面框、文本标签、组合框、文本框、按钮、表格、图片框等。 所谓虚是Layout组件&#x…