【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;
}

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

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

相关文章

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning 1 算法原理 论文&#xff1a;Graves, L., Nagisetty, V., & Ganesh, V. (2021). Amnesiac machine learning. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, 115…

51单片机开发:点阵屏显示数字

实验目标&#xff1a;在8x8的点阵屏上显示数字0。 点阵屏的原理图如下图所示&#xff0c;点阵屏的列接在P0端口&#xff0c;行接在74HC595扩展的DP端口上。 扩展口的使用详见&#xff1a;51单片机开发&#xff1a;IO扩展(串转并)实验-CSDN博客 要让点阵屏显示数字&#xff0…

买卖股票的最佳时机 II

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; 问题分析 本题要求计算在可以多次买卖股票&#xff08;但任何时候最多只能持有一股股票&#xff0c;也可以在同一天买卖&#xff09;的情况下能获得的最大…

2024年度总结——理想的风,吹进现实

2024年悄然过去&#xff0c;留下了太多美好的回忆&#xff0c;不得不感慨一声时间过得真快啊&#xff01;旧年风雪尽&#xff0c;新岁星河明。写下这篇博客&#xff0c;记录我独一无二的2024年。这一年&#xff0c;理想的风终于吹进现实&#xff01; 如果用一句话总结这一年&am…

LosslessScaling-学习版[steam价值30元的游戏无损放大/补帧工具]

LosslessScaling 链接&#xff1a;https://pan.xunlei.com/s/VOHc-yZBgwBOoqtdZAv114ZTA1?pwdxiih# 解压后运行"A-绿化-解压后运行我.cmd"

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…

计算机网络 (61)移动IP

前言 移动IP&#xff08;Mobile IP&#xff09;是由Internet工程任务小组&#xff08;Internet Engineering Task Force&#xff0c;IETF&#xff09;提出的一个协议&#xff0c;旨在解决移动设备在不同网络间切换时的通信问题&#xff0c;确保移动设备可以在离开原有网络或子网…

node 爬虫开发内存处理 zp_stoken 作为案例分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 主要说3种我们补环境过后如果用…

基于Python的哔哩哔哩综合热门数据分析系统的设计与实现

【Django】基于大数据的哔哩哔哩综合热门数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统涵盖登录、热门数据展示、数据分析及数据管理等功能。通过大数据处理与…

Object类(2)

大家好&#xff0c;今天我们继续来看看Object类中一些成员方法&#xff0c;这些方法在实际中有很大的用处&#xff0c;话不多说&#xff0c;来看。 注&#xff1a;所有类都默认继承Object类的&#xff0c;所以可调用Object类中的方法&#xff0c;如equals&#xff0c;也可以发生…

C++封装红黑树实现mymap和myset和模拟实现详解

文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号:连续变化的信号(很多传感器原始输出的信号都为此类信号)D——Digital 数字信号:只有高电平和低电平两种变化(单片机芯片、微控制芯片所能处理的都是数字信号) 下面是模拟信号和连续信号的区别 为什么需要进行模拟信号和数字信号之…

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…

自动驾驶中的多传感器时间同步

目录 前言 1.多传感器时间特点 2.统一时钟源 2.1 时钟源 2.2 PPSGPRMC 2.3 PTP 2.4 全域架构时间同步方案 3.时间戳误差 3.1 硬件同步 3.2 软件同步 3.2.3 其他方式 ① ROS 中的 message_filters 包 ② 双端队列 std::deque 参考&#xff1a; 前言 对多传感器数据…

神经网络|(一)加权平均法,感知机和神经元

【1】引言 从这篇文章开始&#xff0c;将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解&#xff0c;如有雷同或者南辕北辙的表述&#xff0c;请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中&#xff0c;我们总会遇到求一组数据平均值的做法…

算法题(48):反转链表

审题&#xff1a; 需要我们将链表反转并返回头结点地址 思路&#xff1a; 一般在面试中&#xff0c;涉及链表的题会主要考察链表的指向改变&#xff0c;所以一般不会允许我们改变节点val值。 这里是单向链表&#xff0c;如果要把指向反过来则需要同时知道前中后三个节点&#x…

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件&#xff0c;该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…

SpringBoot中Excel表的导入、导出功能的实现

文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…

C语言,无法正常释放char*的空间

问题描述 #include <stdio.h> #include <stdio.h>const int STRSIZR 10;int main() {char *str (char *)malloc(STRSIZR*sizeof(char));str "string";printf("%s\n", str);free(str); } 乍一看&#xff0c;这块代码没有什么问题。直接书写…

2025蓝桥杯JAVA编程题练习Day1

1.刑侦科推理试题 题目描述 有以下10道单选题&#xff0c;编程求这10道题的答案。 这道题的答案是&#xff1a; A. A B. B C. C D. D 第5题的答案是&#xff1a; A. C B. D C. A D. B 以下选项中哪一题的答案与其他三项不同&#xff1a; A. 第3题 B. 第6题 C. 第2题 D.…