【STL笔记】字符串

news2025/1/30 12:36:00

字符串

下标从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;
}

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

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

相关文章

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

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

论文笔记(六十三)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层…

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

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

解决使用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测试

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…

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

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

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

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

进程池的制作(linux进程间通信,匿名管道... ...)

目录 一、进程间通信的理解 1.为什么进程间要通信 2.如何进行通信 二、匿名管道 1.管道的理解 2.匿名管道的使用 3.管道的五种特性 4.管道的四种通信情况 5.管道缓冲区容量 三、进程池 1.进程池的理解 2.进程池的制作 四、源码 1.ProcessPool.hpp 2.Task.hpp 3…

Gurobi 基础语法之 tupledict 和 tuplelist

Python中的字典&#xff1a;dict 我们先来介绍一下Python语法中的 dict 类型, 字典中可以通过任意键值来对数据进行映射&#xff0c;任何无法修改的python对象都可以当作键值来使用&#xff0c;这些无法修改的Python对象包括&#xff1a;整数(比如&#xff1a;1)&#xff0c;浮…

Flutter:搜索页,搜索bar封装

view 使用内置的Chip简化布局 import package:chenyanzhenxuan/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:tdesign_flutter/tdesign_flutter.dart;import i…

IoTDB 2025 春节值班与祝福

2025 春节快乐 瑞蛇迎吉庆&#xff0c;祥光映华年&#xff0c;2025 春节已近在眼前。社区祝福 IoTDB 的所有关注者、支持者、使用者 2025 新年快乐&#xff0c;“蛇”来运转&#xff01; IoTDB 团队的春节放假时间为 2025 年 1 月 27 日至 2 月 4 日&#xff0c;1 月 25 日、26…

刀客doc:禁令影响下,TikTok广告业务正在被对手截胡

一、 现如今&#xff0c;TikTok在美国的命运迎来了暂时的反转&#xff0c;根据Adage的报道&#xff0c;广告主的投放在恢复。但短暂的关闭带来的影响依然有余震&#xff0c;一些广告主在重新评估TikTok在自己广告预算中的地位&#xff0c;这些是竞争对手截胡的机会。 长期以…

中国电信AI大模型发布:评分超o1-preview,近屿智能带您探索AI技术新境界

近日&#xff0c;中国电信人工智能研究院宣布&#xff0c;其自主研发的复杂推理大模型TeleAI-t1-preview即将上线天翼AI开放平台。该模型采用强化学习训练方法&#xff0c;显著提升了逻辑推理和数学推导的准确性&#xff0c;展现了强大的复杂问题解决能力。 在权威评测中&#…

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统&#xff08;UnionFS&#xff09;、命名空间&#xff08;namespace&#xff09;、权限管理&#xff08;cgroup&#xff09;&#xff0c;虚拟出一…