【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.ignore
    int 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;
}

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

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

相关文章

防御保护第一次实验:安全策略配置

一、实验拓扑 二、实验要求 三、需求分析 1.创建两个vlan 2.在ENSP中配置基于时间的ACL实现对于办公区PC访问OA Server的时间限制&#xff08;工作日早8到晚6&#xff09;。 3.通过配置基于MAC地址的ACL来实现对于生产区PC访问Web Server的限制&#xff08;除PC3外不能访问&am…

[权限提升] Windows 提权 — 系统内核溢出漏洞提权

关注这个框架的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;系统内核溢出漏洞提权介绍 注意&#xff1a;提权很容易让电脑蓝屏&#xff0c;所以如果是测试的话&#xff0c;提权前最好做好系统备份。 溢出漏洞就像是往杯子里装水 —— 如…

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好&#xff0c;今天是Dest1ny漏洞库的专题&#xff01;&#xff01; 会时不时发送新的漏洞资讯&#xff01;&#xff01; 大家多多关注&#xff0c;多多点赞&#xff01;&#xff01;&#xff01; 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚…

在线课堂小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…

Qt Designer and Python: Build Your GUI

1.install pyside6 2.pyside6-designer.exe 发送到桌面快捷方式 在Python安装的所在 Scripts 文件夹下找到此文件。如C:\Program Files\Python312\Scripts 3. 打开pyside6-designer 设计UI 4.保存为simple.ui 文件&#xff0c;再转成py文件 用代码执行 pyside6-uic.exe simpl…

【Rust自学】15.7. 循环引用导致内存泄漏

说句题外话&#xff0c;这篇文章真心很难&#xff0c;有看不懂可以在评论区问&#xff0c;我会尽快作答的。 喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω…

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

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

乐优商城项目总结

文章目录 项目简介微服务集群1.enreka注册中心2. zuul网关3. 公共工具类4. 商品微服务5. 文件上传微服务6. 搜索微服务7. 页面静态化微服务8. 用户微服务9. 短信微服务10. 认证微服务11. 购物车微服务12. 订单微服务项目最大的收获项目遇到的问题 项目简介 乐优商城是一个全品…

基于django的智能停车场车辆管理深度学习车牌识别系统

完整源码项目包获取→点击文章末尾名片&#xff01;

【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

双层Git管理项目,github托管显示正常

双层Git管理项目&#xff0c;github托管显示正常 背景 在写React项目时&#xff0c;使用Next.js,该项目默认由git托管。但是我有在项目代码外层记笔记的习惯&#xff0c;我就在外层使用了git托管。 目录如下 code 层内也有.git 文件&#xff0c;对其托管。 我没太在意&…

54.数字翻译成字符串的可能性|Marscode AI刷题

1.题目 问题描述 小M获得了一个任务&#xff0c;需要将数字翻译成字符串。翻译规则是&#xff1a;0对应"a"&#xff0c;1对应"b"&#xff0c;依此类推直到25对应"z"。一个数字可能有多种翻译方法。小M需要一个程序来计算一个数字有多少种不同的…

基于Langchain-Chatchat + ChatGLM 本地部署知识库

一、相关环境 参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat Langchain-chatchat版本&#xff1a;v0.3.1 安装环境&#xff1a;Ubuntu&#xff1a;22.04&#xff0c;CUDA&#xff1a;12.1 二、搭建过程 2.1 环境配置 2.1.1 创建chatchat虚拟环…

Hive:日志,hql运行方式,Array,行列转换

日志 可以在终端通过 find / | grep hive-log4j2 命令查找Hive的日志配置文件 这些文件用于配置Hive的日志系统。它们不属于系统日志也不属于Job日志&#xff0c;而是用于配置Hive如何记录系统日志和Job日志, 可以通过hive-log4j2 查找日志的位置 HQL的3种运行方式 第1种就是l…

护眼好帮手:Windows显示器调节工具

在长时间使用电脑的过程中&#xff0c;显示器的亮度和色温对眼睛的舒适度有着重要影响。传统的显示器调节方式不仅操作繁琐&#xff0c;而且在低亮度下容易导致色彩失真。因此&#xff0c;今天我想为大家介绍一款适用于Windows系统的护眼工具&#xff0c;它可以帮助你轻松调节显…

简要介绍C语言和c++的共有变量,以及c++特有的变量

在C语言和C中&#xff0c;变量是用来存储数据的内存位置&#xff0c;它们的使用方式和特性在两种语言中既有相似之处&#xff0c;也有不同之处。以下分别介绍C语言和C的共有变量以及C特有的变量。 C语言和C的共有变量 C语言和C都支持以下类型的变量&#xff0c;它们在语法和基…

Python爬虫学习第三弹 —— Xpath 页面解析 实现无广百·度

早上好啊&#xff0c;大佬们。上回使用 Beautiful Soup 进行页面解析的内容是不是已经理解得十分透彻了~ 这回我们再来尝试使用另外一种页面解析&#xff0c;来重构上一期里写的那些代码。 讲完Xpath之后&#xff0c;小白兔会带大家解决上期里百度搜索的代码编写&#xff0c;保…

消息队列篇--通信协议篇--应用层协议和传输层协议理解

在网络通信中&#xff0c;传输层协议和应用层协议是OSI模型中的两个不同层次的协议&#xff0c;它们各自承担着不同的职责。 下文中&#xff0c;我们以TCP/UDP&#xff08;传输层协议&#xff09;和HTTP/SMTP&#xff08;应用层协议&#xff09;为例进行详细解释。 1、传输层协…

Maui学习笔记- SQLite简单使用案例02添加详情页

我们继续上一个案例&#xff0c;实现一个可以修改当前用户信息功能。 当用户点击某个信息时&#xff0c;跳转到信息详情页&#xff0c;然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…