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

【STL笔记】字符串

字符串

下标从0开始,常规用法不再赘述,持续更新中…

1. substr(pos,len):
返回从位置 pos 开始,长度为 len 的子串。(len默认为npos)

std::string str = "Hello, World!";
std::string sub1 = str.substr(7, 5);  // 提取从索引 7 开始,长度为 5 的子串
std::string sub2 = str.substr(7);     // 提取从索引 7 开始直到字符串末尾的子串
std::cout << sub1 << std::endl;       // 输出 "World"
std::cout << sub2 << std::endl;       // 输出 "World!"

2. find(str/c,pos) :
查找字符串str或字符c,pos为开始查找的位置,默认为0
如果找到了目标,返回首次出现的位置(索引),如果没有找到,返回 std::string::npos (一个非常大的数,用于表示“无效位置”或“未找到”的情况)

std::string str = "Hello, World!";
size_t pos1 = str.find("World");  // 查找子字符串 "World"
size_t pos2 = str.find('o');      // 查找字符 'o'
size_t pos3 = str.find("world");  // 查找子字符串 "world"(区分大小写)
std::cout << pos1 << std::endl;  // 输出 7
std::cout << pos2 << std::endl;  // 输出 4
std::cout << pos3 << std::endl;  // 输出 std::string::npos,因为没有找到

3. replace(pos,len,替换内容):
用于替换字符串中的一部分内容。
pos:要替换的起始位置。
len:要替换的字符数。
替换内容 :
str (字符串)
str,subpos,sublen (字符串子串)
n,c(n个字符c)
返回值:返回替换后的字符串(本身修改,返回引用)

std::string str = "Hello, World!";
str.replace(7, 5, "C++");  // 将 "World" 替换为 "C++"
std::cout << str << std::endl;  // 输出 "Hello, C++!"str.replace(0, 5, 3,'H');  // 将 "Hello" 替换为3个"H"
std::cout << str << std::endl;  // 输出 "HHH, C++!"

4. erase(pos,len):
用于删除字符串中的一部分。
pos:要删除的起始位置。
len:要删除的字符数,默认为 std::string::npos,表示删除从 pos 到字符串末尾的所有字符。
返回值:返回删除后的字符串(本身修改,返回引用)。

std::string str = "Hello, World!";
str.erase(5, 7);  // 删除从索引 5 开始,长度为 7 的子串
std::cout << str << std::endl;  // 输出 "Hello!"

5. insert(pos,插入内容) 函数
用于在字符串的指定位置插入新的字符或子字符串。
pos:要插入的位置。
插入内容:
str:要插入的字符串。
s:要插入的 C 字符串。
n ,c:要插入的字符和数量。
返回值:返回插入后的字符串(本身修改,返回引用)。

std::string str = "Hello!";
str.insert(5, " World");  // 在索引 5 位置插入 " World"
std::cout << str << std::endl;  // 输出 "Hello World!"str.insert(0, "Say ");  // 在字符串开始位置插入 "Say "
std::cout << str << std::endl;  // 输出 "Say Hello World!"

6. getline :
getline(cin,s) 可以从输入流读取一整行数据。
注意事项:在前面用cin读取了一个整数后,要先将剩余的换行符清除,否则getline会把这单个换行符读为s。实测cin.ignore()最好用。

int main() {cin.tie(0)->ios::sync_with_stdio(0); // 开完这行后getchar会出错,所以最好用cin.ignoreint n;cin>>n;// getchar();  cin.ignore();  // 忽略掉多余的换行符string line;getline(cin,line);   cout<<line;return 0;
}

7. 整形字符串转化、逆序

    // 将整型数字转换为字符串string str = to_string(number);// 将一个容器逆序reverse(str.begin(), str.end());// 将逆序后的字符串转换回整型int reversedNumber = stoi(str);

8. 比大小:
字符串可以直接比较,会按照字典序进行比较,也可以sort排序。

实战演练 : 打败猫娘

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
typedef long long ll;
using namespace std;signed main() {cin.tie(0)->ios::sync_with_stdio(0);int N;cin>>N;cin.ignore();string b[101];for(int i=0;i<N;i++){getline(cin,b[i]);}int k;cin>>k;cin.ignore();string s;string thc="@!";  //将违禁词暂时替换为为"@!" getline(cin,s);int cnt=0;for(int i=0;i<N;i++){while(s.find(b[i])!=s.npos){s.replace(s.find(b[i]),b[i].length(),thc);cnt++;}}while( s.find(thc) != s.npos){s.replace(s.find(thc),2,"<censored>");}if(cnt<k)cout<<s;else{cout<<cnt<<endl<<"He Xie Ni Quan Jia!"<<endl;}return 0;
}

相关文章:

【STL笔记】字符串

字符串 下标从0开始&#xff0c;常规用法不再赘述&#xff0c;持续更新中… 1. substr(pos&#xff0c;len): 返回从位置 pos 开始&#xff0c;长度为 len 的子串。(len默认为npos) std::string str "Hello, World!"; std::string sub1 str.substr(7, 5); // 提…...

java知识点 | java中不同数据结构的长度计算

在Java中&#xff0c;size 和 length是两个不同的属性&#xff0c;分别用于不同的数据结构。以下是它们的详细区别和适用场景&#xff1a; 1.length 适用对象&#xff1a; 数组&#xff08;Array&#xff09;&#xff1a;数组是一个固定长度的线性数据结构&#xff0c;其长度是…...

WordPress event-monster插件存在信息泄露漏洞(CVE-2024-11396)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…...

AI软件栈:LLVM分析(一)

文章目录 AI 软件栈后端编译LLVM IRLLVM的相关子项目AI 软件栈后端编译 AI软件栈的后端工作通常与硬件架构直接相关,为了实现一个既能适配现代编程语言、硬件架构发展的目标,所以提出了LLVM具备多阶段优化能力提供基础后端描述,便于进行编译器开发兼容标准编译器的行为LLVM …...

编程语言中的常见Bug及解决方案

在编程过程中&#xff0c;不同语言有其独特的特性和挑战&#xff0c;这也导致了各种常见Bug的出现。本文将总结几种主流编程语言中的常见Bug&#xff0c;包括JavaScript、Python、C/C、Java和Go&#xff0c;并提供相应的解决方案和案例。 一、JavaScript中小数相加精度不准确的…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective&#xff08;三&#xff09; 文章概括 文章概括 引用&#xff1a; article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…...

修改maven的编码格式为utf-8

1.maven默认编码为GBK 注:配好MAVEN_HOME的环境变量后,在运行cmd. 打开cmd 运行mvn -v命令即可. 2.修改UTF-8为默认编码. 设置环境变量 变量名 MAVEN_OPTS 变量值 -Xms256m -Xmx512m -Dfile.encodingUTF-8 3.保存,退出cmd.重新打开cmd 运行mvn -v命令即可. 源码获取&…...

从AD的原理图自动提取引脚网络的小工具

这里跟大家分享一个我自己写的小软件&#xff0c;实现从AD的原理图里自动找出网络名称和引脚的对应。存成文本方便后续做表格或是使用简单行列编辑生成引脚约束文件&#xff08;如.XDC .UCF .TCL等&#xff09;。 我们在FPGA设计中需要引脚锁定文件&#xff0c;就是指示TOP层…...

Coze,Dify,FastGPT,对比

在当今 AI 技术迅速发展的背景下&#xff0c;AI Agent 智能体成为了关键领域&#xff0c;Coze、Dify 和 FastGPT 作为其中的佼佼者&#xff0c;各有千秋。 平台介绍 - FastGPT&#xff1a;由环界云计算公司发起&#xff0c;是基于大语言模型&#xff08;LLM&#xff09;的开源…...

【数据结构】_链表经典算法OJ(力扣版)

目录 1. 移除链表元素 1.1 题目描述及链接 1.2 解题思路 1.3 程序 2. 反转链表 2.1 题目描述及链接 2.2 解题思路 2.3 程序 3. 链表的中间结点 3.1 题目描述及链接 3.2 解题思路 3.3 程序 1. 移除链表元素 1.1 题目描述及链接 原题链接&#xff1a;203. 移除链表…...

【数据结构】(1)集合类的认识

一、什么是数据结构 1、数据结构的定义 数据结构就是存储、组织数据的方式&#xff0c;即相互之间存在一种或多种关系的数据元素的集合。 2、学习数据结构的目的 在实际开发中&#xff0c;我们需要使用大量的数据。为了高效地管理这些数据&#xff0c;实现增删改查等操作&…...

Vue 3 中的 TypeScript:接口、自定义类型与泛型

在 Vue 3 中&#xff0c;TypeScript 提供了强大的类型系统&#xff0c;帮助我们更好地管理代码的类型安全。通过使用 接口&#xff08;Interface&#xff09;、自定义类型&#xff08;Type Aliases&#xff09; 和 泛型&#xff08;Generics&#xff09;&#xff0c;我们可以编…...

计算机组成原理(计算机系统3)--实验七:新增指令实验

一、实验目标 了解RISC-V mini处理器架构&#xff0c;在其基础之上新增一个指令&#xff0c;完成设计并观察指令执⾏。 二、实验内容 1) 修改数据通路&#xff0c;新增指令comb rs1,rs2,rd采用R型指令格式&#xff0c;实现将rs1高16位和rs2低16位拼接成32位整数&#xff0c;…...

LeetCode 0040.组合总和 II:回溯 + 剪枝

【LetMeFly】40.组合总和 II&#xff1a;回溯 剪枝 力扣题目链接&#xff1a;https://leetcode.cn/problems/combination-sum-ii/ 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates…...

解决使用Selenium时ChromeDriver版本不匹配问题

在学习Python爬虫过程中如果使用Selenium的时候遇到报错如下session not created: This version of ChromeDriver only supports Chrome version 99… 这说明当前你的chrome驱动版本和浏览器版本不匹配。 例如 SessionNotCreatedException: Message: session not created: This…...

CAN波特率匹配

STM32 LinuxIMX6ull&#xff08;Linux&#xff09;基于can-utils测试...

JVM垃圾回收器的原理和调优详解!

全文目录&#xff1a; 开篇语前言摘要概述垃圾回收器分类及原理1. Serial 垃圾回收器2. Parallel 垃圾回收器3. CMS 垃圾回收器4. G1 垃圾回收器 源码解析示例代码 使用案例分享案例 1&#xff1a;Web 服务的 GC 调优案例 2&#xff1a;大数据任务的 GC 优化 应用场景案例垃圾回…...

与机器学习相关的概率论重要概念的介绍和说明

概率论一些重要概念的介绍和说明 1、 试验 &#xff08;1&#xff09;试验是指在特定条件下&#xff0c;对某种方法、技术、设备或产品&#xff08;即&#xff0c;事物&#xff09;进行测试或验证的过程。 &#xff08;2&#xff09;易混淆的概念是&#xff0c;实验。实验&…...

JavaScript中的相等运算符:`==`与`===`

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战

服务容器化构建的环境配置构建前需要解决什么下面我们带着问题分析构建的过程:1. 如何解决jenkins执行环境与shell脚本执行环境不一致问题?2. 构建之前动态修改项目的环境变量3. 在通过容器打包时避免不了会产生比较多的不可用的镜像资源,这些资源要是不及时删除掉时会导致服…...

66-《虞美人》

虞美人 虞美人&#xff08;学名&#xff1a;Papaver rhoeas L.&#xff09;&#xff1a;一年生草本植物&#xff0c;全体被伸展的刚毛&#xff0c;稀无毛。茎直立&#xff0c;高25-90厘米&#xff0c;具分枝。叶片轮廓披针形或狭卵形&#xff0c;羽状分裂&#xff0c;裂片披针形…...

obsidian插件——Metadata Hider

原本是要找导出图片时显示属性的插件&#xff0c;奈何还没找到&#xff0c;反而找到了可以隐藏属性的插件。唉&#xff0c;人生不如意&#xff0c;十之八九。 说一下功能&#xff1a; 这个插件可以把obsidian的文档属性放在右侧显示&#xff0c;或者决定只显示具体几项属性&a…...

MySQL中InnoDB逻辑存储结构

在MySQL中&#xff0c;InnoDB是最常用的存储引擎之一&#xff0c;它具有高度的事务支持、行级锁、ACID特性以及自动崩溃恢复等特性。InnoDB的逻辑存储结构可以分为多个层次&#xff0c;下面是详细的解析。 1. 表空间 (Tablespace) InnoDB的物理存储结构以表空间为基础。表空间…...

高阶C语言|深入理解字符串函数和内存函数

文章目录 前言1.求字符串长度1.1 字符串长度函数&#xff1a;strlen模拟实现 长度不受限制的字符串函数1.2 字符串拷贝函数&#xff1a;strcpy模拟实现 1.3 字符串连接函数&#xff1a;strcat模拟实现 1.4 字符串比较函数&#xff1a;strcmp模拟实现 长度受限制的字符串函数2.1…...

Pandas DataFrame 拼接、合并和关联

拼接:使用 pd.concat(),可以沿着行或列方向拼接 DataFrame。 合并:使用 pd.merge(),可以根据一个或多个键进行不同类型的合并(左连接、右连接、全连接、内连接)。 关联:使用 join() 方法,通常在设置了索引的 DataFrame 上进行关联操作。 concat拼接 按列拼接 df1 = …...

特种作业操作之低压电工考试真题

1.下面&#xff08; &#xff09;属于顺磁性材料。 A. 铜 B. 水 C. 空气 答案&#xff1a;C 2.事故照明一般采用&#xff08; &#xff09;。 A. 日光灯 B. 白炽灯 C. 压汞灯 答案&#xff1a;B 3.人体同时接触带电设备或线路中的两相导体时&#xff0c;电流从一相通过人体流…...

“Play around” 在编程领域的含义

“Play around” 的含义 If everything is working correctly we should have a play around in the prompt and verify that functions are actually a new type of value now, not symbols. https://www.buildyourownlisp.com/chapter11_variables 在这段话中&#xff0c;“p…...

[免费]基于Python的Django博客系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django博客系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展&#xff0c;信息的传播与…...

通过protoc工具生成proto的pb.go文件以及使用protoc-go-inject-tag工具注入自定义标签

1.ProtoBuf认识,安装以及用法 参考:[golang 微服务] 3. ProtoBuf认识&#xff0c;安装以及golang 中ProtoBuf使用 2. 使用protoc-go-inject-tag工具注入自定义标签 这里有一个案例: syntaxproto3; package test;option go_package ".;test";message MyMessage {int6…...