当前位置: 首页 > news >正文

string容器及其简单使用

string容器

  • 概述
  • 声明和初始化
  • 获取字符串长度
  • 字符串拼接
  • 字符串比较
  • 字符串插入和删除
  • 字符串转换

概述

string是C++中的一个标准库容器,用于处理字符串。它提供了一系列的操作函数,使得我们可以像处理其他容器一样方便地处理字符串。下面是string容器的详细介绍:

声明和初始化

我们可以通过以下方式声明和初始化一个string对象:

string s1;             // 默认构造函数,s1为空字符串
string s2("hello");    // 使用字符串字面值初始化s2
string s3 = "world";   // 使用赋值运算符初始化s3
string s4(s2);         // 使用s2初始化s4

获取字符串长度

string容器中提供了一个函数size(),可以用来获取字符串的长度,例如:

string s = "hello";
int len = s.size();   // len为5

访问字符串元素
我们可以通过下标或迭代器来访问字符串中的元素:


string s = "hello";
char c1 = s[0];          // c1为'h'
char c2 = s.at(1);       // c2为'e'
string::iterator it = s.begin();
char c3 = *it;           // c3为'h'

需要注意的是,当我们使用下标访问字符串时,如果下标越界,程序将会出错。而使用at()函数访问时,如果下标越界,将会抛出std::out_of_range异常。

字符串拼接

我们可以使用+运算符来将两个字符串拼接起来,例如:


string s1 = "hello";
string s2 = "world";
string s3 = s1 + s2;    // s3为"helloworld"

字符串比较

我们可以使用==、!=、<、>、<=、>=等运算符来比较两个字符串的大小关系,例如:

string s1 = "hello";
string s2 = "world";
bool b1 = (s1 == s2);   // b1为false
bool b2 = (s1 < s2);    // b2为true

需要注意的是,字符串比较时是按照字典序进行比较的。

字符串查找和替换
string容器提供了一系列函数来进行字符串的查找和替换,例如:


string s = "hello world";
int pos = s.find("world");       // pos为6
string s1 = s.substr(0, 5);      // s1为"hello"
s.replace(pos, 5, "there");      // s变为"hello there"

其中,find()函数用于查找字符串中是否包含指定的子串,如果包含,返回该子串在字符串中的起始位置,否则返回-1。substr()函数用于获取指定位置的子串。replace()函数用于将指定位置的子串替换为另一个子串。

字符串插入和删除

我们可以使用insert()函数向字符串中插入新的字符,也可以使用erase()函数删除指定位置的字符,例如:

string s = "hello world";
s.insert(5, "there ");    // s变为"hello there world"
s.erase(11, 1);           // s变为"hello thereorld"

其中,insert()函数用于在指定位置插入一个字符串或字符,第一个参数为插入位置的下标,第二个参数为插入的字符串或字符。erase()函数用于删除从指定位置开始指定长度的字符,第一个参数为删除起始位置的下标,第二个参数为要删除的字符个数。

字符串转换

string容器提供了一些函数来进行字符串和数字之间的转换,例如:


string s = "123";
int n = stoi(s);           // n为123
double d = stod(s);        // d为123.0
string s1 = to_string(n);  // s1为"123"

其中,stoi()函数可以将字符串转换为整型,stod()函数可以将字符串转换为双精度浮点型,to_string()函数可以将数字转换为字符串。

总的来说,string容器提供了丰富的函数来处理字符串,可以方便地完成字符串的操作。如果需要对字符串进行复杂的操作,也可以使用正则表达式库或其他字符串处理库来进行。

相关文章:

string容器及其简单使用

string容器 概述声明和初始化获取字符串长度字符串拼接字符串比较字符串插入和删除字符串转换 概述 string是C中的一个标准库容器&#xff0c;用于处理字符串。它提供了一系列的操作函数&#xff0c;使得我们可以像处理其他容器一样方便地处理字符串。下面是string容器的详细介…...

芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS

修饰性PEG芴甲氧羰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS是保护氨基的PEG衍生物之一 结构式&#xff1a; 芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS聚乙二醇化可以提高聚乙二醇分子的稳定性&#xff0c;降低其免疫原性&#xff0c;仅用于科研实验。 FMOC-NH…...

【JavaWeb】Servlet(崔老师版)

文章目录 1.概述1.1 JavaWeb三大组件1.2 Servlet作用 2.ServletConfig接口3.Servlet接口3.1 实现Servlet的方式3.2 Servlet生命周期 4.HttpServlet抽象类5.ServletContext5.1 概述5.2 获取ServletContext5.3 JavaWeb四大域对象5.4 获取应用初始化参数5.5 ServletContext获取资源…...

ITSS服务经理 、服务工程师线上开班在即

为了促进企业信息技术服务-运行维护服务能力&#xff0c;全面系统的提升员工的IT服务知识和技能水平&#xff0c;且更好的满足参训企业的时间需求&#xff0c;我司将于5月份开展ITSS服务经理、服务工程师线上班。 日期和形式 五月份&#xff1a;ITSS服务项目经理&#xff1a;…...

【LeetCode】199.二叉树的右视图

1.问题 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: []…...

Shell编程(三)grep sed awk文本处理三剑客

上一章&#xff1a; Shell编程(二&#xff09;_做测试的喵酱的博客-CSDN博客 一、ps命令 指令&#xff1a; ps作用&#xff1a; 主要是查看服务器的进程信息选项含义&#xff1a; -e&#xff1a;等价于 ‘-A’ &#xff0c;表示列出全部的进程 -f&#xff1a;显示全部的列&am…...

一步步带你学习Python编程:从零开始的查缺补漏

在快节奏的生活中&#xff0c;很难找到时间来学习新的技能。但有时候&#xff0c;我们会突然发现自己有一些空闲时间&#xff0c;而又不想虚度光阴。无聊的时候&#xff0c;我们可以选择学习一项新技能来充实自己。最近&#xff0c;我就因为有些无聊&#xff0c;决定重新学习Py…...

常见容器的方法

常见容器 向量 (vector)常用方法代码实例 列表 (list)常用方法 集合 (set)常用方法 映射 (map)方法 向量 (vector) 常用方法 vector::push_back(): 将元素插入向量尾部。 vector::pop_back(): 弹出向量尾部的元素。 vector::insert(): 在指定位置插入元素。 vector::erase():…...

【Linux】线程

1.理解地址空间和页表 1.地址空间是进程能够看到的资源窗口 2.页表决定进程真正拥有的资源情况 3.合理的对地址空间和页表进行资源划分就可以对一个进程的所有资源进行划分&#xff1a;过地址空间分为栈区、堆区…通过页表映射到不同的物理内存。 在32位平台下&#xff0c;…...

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…...

Oracle OCI 修改 Compute Instance Hostname

Oracle OCI 修改 Compute Instance Hostname Oracle Linux 7 及之后的版本 Oracle Linux 7 及之后的版本 1, Update the /etc/hostname file with below command. hostnamectl set-hostname <new name>2, Edit the oci configuration file for hostnames as given belo…...

垃圾收集算法面试总结

垃圾收集算法 标记 - 清除算法 首先标记出所有需要被回收的对象&#xff0c;标记完后统一回收所有被标记的对象。 后续的收集算法都是基于这种思路并对其不足进行改进而得到的。 这种方法主要有两个缺点&#xff1a; 一个是效率问题&#xff0c;标记和清除两个过程的效率都…...

grep替换指定字符串方法

在 Linux 命令行中&#xff0c;可以使用 grep 命令来查找匹配某个模式的字符串&#xff0c;并将其替换为另一个字符串。具体方法如下&#xff1a; grep -rl <pattern> <directory> | xargs sed -i s/<old_string>/<new_string>/g其中&#xff0c;<…...

主从模式、哨兵模式、集群模式(cluster)

主从模式、哨兵模式、集群模式&#xff08;cluster&#xff09; redis 实现高可用的方式分为 主从模式、哨兵模式、集群模式&#xff08;cluster&#xff09; 1. 主从模式&#xff08;又称为主从复制&#xff09; 表现为1个主节点&#xff0c;多个从节点&#xff0c;主节点负…...

题目3180:蓝桥杯2023年第十四届省赛真题-互质数的个数======及探讨互质专题

原题链接 https://www.dotcpp.com/oj/problem3162.html 想直接看题解的&#xff0c;跳转到第三次尝试即可。 已AC。 解析&#xff1a; &#xff08;1&#xff09;首先大家要知道什么叫互质&#xff1a; 以及它们的性质&#xff1a; 欧拉函数 在数论中&#xff0c;对正整…...

Java 文件操作

字符流-Writer和Reader用于读取文本-BufferedReader(new FileReader("path")) 读取文本文件-BufferedWriter(new FileWriter("path")) 写入到文本文件 字节流-InputStream和OutputStream图片、二进制文件-BufferedInputStream(new FileInputStream(new F…...

二叉树OJ题(C++实现)

文章目录 1.二叉树的层序遍历2. 二叉树的最近公共祖先3.二叉搜索树与双向链表4.从前序与中序遍历序列构造二叉树 1.二叉树的层序遍历 二叉树的层序遍历 OJ连接 主要思路是借助一个队列&#xff0c;将每一层的数据以size统计&#xff0c;当size为0时说明该层数据已经输入完&…...

grep -nr 命令查询字符串方式

grep -nr “搜索内容” 文件路径 其中&#xff1a; -n&#xff1a;显示行号-r&#xff1a;递归查找子目录中的文件“搜索内容”&#xff1a;要搜索的内容文件路径&#xff1a;要搜索的文件路径&#xff0c;可以是单个文件或目录路径&#xff08;将会递归搜索该目录下的所有文…...

AgentAI+ChatGPT给出答案-为什么即时通讯需要心跳

序言 人工智能ChatGpt 结合系统化的问题拆解, 现在已经能够进行问题的拆解与自问自答, 预计未来很多的脑力工作要被释放了, 作为即时通讯的开发人员, 我问问专业的问题 为什么即时通讯需要心跳 先看产品界面与使用结果 问题拆解过程 执行任务1: 概念搜索 “Executing “Res…...

跨平台跨端的登录流程及其安全设计

跨平台跨端的登录流程及其安全设计 目录 跨平台跨端的登录流程及其安全设计 一、登录流程 1.1、登录流程时序图 1.2、三方App 登录 1.3、请求的路由守卫 二、注册流程 2.1、注册流程时序图 2.2、多因素认证 2.3、自动跳转登录页面 三、涉及的技术与安全 3.1、用户…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...