string略解

news/2025/10/17 12:19:04/文章来源:https://www.cnblogs.com/Dlyim/p/19147515

string

字符串类型,下标从0开始。

函数用法

定义

#include <iostream>
#include <string>string s;

初始化

string s="Hello,World!";sting a="Hello,";
string b="World!";
string s=a+b;string s("Hello,World!");
//上述三种s等价

输入

cin>>s;
//遇到空格或换行就截止
getline(cin,s);
//遇到换行才会截止

获取长度

int len=s.size();int len=s.length();
//上述代码等价

size()length 返回值:int

检查空串

if(s.empty()) printf("No");
else printf("Yes");
//空串输出No,非空串输出Yes

empty() 返回值:bool,空串返回1,非空返回0

访问指定字符

cout<<s[i]; //访问下标为i的元素cout<<s.at(i); //访问下标为i的元素
//上述代码等价

operator[]at() 返回值:char

截取子串

string sub=s.substr(i1,i2); //截取下标从i1到i2的字符

substr() 返回值:string,为截取到的字符串

查找字符

//查找子字符串在字符串中首次出现的位置
int id=s.find("sub"); //寻找sub在原字符串中首次出现的位置//查找子字符串在字符串中最后一次出现的位置
int id=s.rfind("sub"); //寻找sub在原字符串中最后一次出现的位置

find()rfind() 返回值:int,返回该子串首位在原字符串中的下标,如果目标不存在则返回-1

替换字符

//全部替换
s.assign("sub"); //将整个原字符串替换为sub
s.assign(str,i,len); //将整个原字符串替换为str从i下标开始的len个字符
s.assign(x,'a'); //将整个原字符串替换为x个字符a(a必须是char类型)//区间修改
s.replace(i,len,"sub"); //将原字符串中从下标i开始的len位替换为sub//单点修改
s[i]='a'; //将原字符串i下标的元素替换为a(a必须是char类型)

插入字符

//在字符串末尾添加内容
s.append("sub"); //将sub添加到原字符串末尾s+=sub; //将sub添加到原字符串末尾
//上述代码等价
s.push_back('a'); //将字符a添加到原字符串末尾(a必须是char类型)//在指定位置插入内容
s.insert(i,"sub"); //将sub插入到原字符串下标为i的位置

删除字符

//删除指定字符
s.erase(i,len); //删除从下标i开始的len位字符//清空字符串
s.clear(); //清空整个字符串//从结尾删除
s.pop_back(); //删除字符串中最后一位字符

指针

const char* c=s.c_str();const char* c=s.data();
//上述代码等价

c_str()data() 返回值:const char*,获得一个指向原字符串的指针

比较/匹配

//比较两个字符串
int res=s.compare("other"); //比较s和other
if(res==0) printf("Yes");
else printf("No");
//相同输出Yes,不相同输出No//查找第一个匹配任意字符的位置(只要给定字符串中任意一位匹配到了就会返回)
size_t id=s.find_first_of("abc");
//查找第一个出现的字母'a','b','c'中的任意一个字符的位置//查找最后一个匹配任意字符的位置(只要给定字符串中任意一位匹配到了就会返回)
size_t id=s.find_last_of("abc");
//查找最后一个出现的字母'a','b','c'中的任意一个字符的位置//查找第一个不匹配任意字符的位置(只要某个字符串不在给定字符内就会返回)
size_t id=s.find_first_not_of("abc");
//查找第一个不属于'a','b','c'中任意一个字符的位置//查找最后一个不匹配任意字符的位置(只要某个字符串不在给定字符内就会返回)
size_t id=s.find_last_not_of("abc");
//查找最后一个不属于'a','b','c'中任意一个字符的位置

compare() 返回值:int,相同返回0,不相同返回-1

find_first_of(),find_last_of(),find_first_not_of(),find_last_not_of()

返回值:size_t,匹配到对应的会返回下标,没有匹配到会返回npos

反转

//反转整个字符串
reverse(s.begin(),s.end());//反转部分字符
reverse(s.begin()+i,s.begin()+j+1); //反转下标从i到j的部分

转换

//int转string
s=to_string(x); //将int类型的x转为string类型的s//string转int
x=stoi(s); //将string类型的s转为int类型的x//char[]转string (c是char[]类型)
s=c; //将char[]类型的c转为string类型的ss.assign(c); //将char[]类型的c转为string类型的s
//上述方法等效//string转char[] (c是char[]类型)
s.copy(c,len,i); //将string类型的s中从下标i开始的len位转换为char[]类型

copy() 返回值:size_t,返回复制的字符数量

遍历

  1. 使用基于范围的for循环
for(char c:s){cout<<s<<" ";
}

直接遍历了原string的内容

  1. 使用下标访问
for(int i=0;i<s.length();i++){cout<<s[i]<<" ";
}

常用于修改字符,但是它涉及到字符串的拷贝,会有额外开销

  1. 使用迭代器
for(auto i=s.begin();i!=s.end();i++){cout<<*i<<" ";
}

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

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

相关文章

《程序员修炼之道》 阅读笔记二

核心概念解读 “软件的熵”也被称为“破窗效应”。一个软件项目,如果出现了第一个糟糕的设计、第一个临时的脏代码、第一个没有修复的bug,而没有人去处理,它就会迅速腐烂。这就像一栋建筑有一扇破窗不被修理,很快就…

是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk

是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk最早我一直在用向日葵,但后来被限速,体验越来越差。远程操作,没必要花钱,于是开始找免费的替代方案。 后来试了ToDesk,刚开始感觉还行,但…

史馆

发言人 内容至“某些人”的一封信 https://www.luogu.com.cn/article/qdk2rgrt行啊,我没开完隐,你谴责我注册时间早,你来看看我注册之后都在干什么你拒绝是你的事,学校怎样做是学校的事,如果你来问我文化课我会拒…

firecrawl 私有部署(test)

firecrawl 私有部署(test) github: https://github.com/firecrawl/firecrawl 文档: https://docs.firecrawl.dev/introduction安装:git clone https://github.com/firecrawl/firecrawl.gitcd firecrawldocker co…

$\text{Catalan}$ 数 卡特兰数

定义公式 \(1\):\(C_n=\begin{pmatrix}2n\\n\end{pmatrix}-\begin{pmatrix}2n\\n-1\end{pmatrix}\)公式 \(2\):\(C_n=\sum_{a+b=n-1}C_aC_b\)公式 \(3\):\(C_n=\frac{4n-2}{n+1}C_{n-1},C_0=1\)其中公式 \(3\) 表明…

大模型 | VLM 初识及在自动驾驶场景中的应用

在了解 VLM 之前,先复习下 LLM。 一、LLM(Large Language Model) 大语言模型(LLM,Large Language Model)名字虽然带有语言二字,但其实并不局限于语言类场景。LLM 更多是一种统计建模的通用技术,它们主要通过自回…

CF1977 Codeforces Round 948 (Div. 2) 游记(VP)

仅做出两题,结果凭借手速拿到表现分 $1740$。省流 仅做出两题,结果凭借手速拿到表现分 \(1740\)。10.17 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 早上花了很多时间试图把 \(stars569\) 搞的数据库装好,…

别被波形“骗” 了!差分探头与无源探头测量不一致的 5 大关键因素

在电子测量领域,精确地获取电路中电信号的波形对于分析电路的工作状态、验证设计思路以及排查故障至关重要。示波器是波形测量中最常用的仪器,通常会搭配不同类型的探头使用。其中,差分探头和无源探头是比较常见的两…

2025 年展览会服务商最新推荐榜权威发布:22 年经验甄选十强品牌,助力企业参展高效决策

当前会展行业已迈入 “全链路价值创造” 新阶段,企业参展需求从单一搭建升级为 “策划 - 执行 - 转化” 全流程服务,但市场服务商资质参差不齐:传统机构多困于 “设计 + 施工” 模式,新兴品牌虽具创新力却缺乏辨识…

OpenHarmony SELinux全面技术指南:从原理到实践的系统安全防护(全网最全) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年信息流代运营服务商权威推荐榜单:专业投放策略与效果优化服务口碑之选

2025年信息流代运营服务商权威推荐榜单:专业投放策略与效果优化服务口碑之选在数字营销快速演进的今天,信息流广告已成为企业获取目标用户的重要渠道。随着各大媒体平台算法不断升级,用户行为日趋复杂,信息流投放的…

2025 年焊把线厂家最新推荐榜:国标欧标铜芯软焊把线优质企业排行,优质品牌助力选购欧标/铜芯/软/耐高温焊把线厂家推荐

在工业制造、建筑施工等核心领域,焊把线作为焊接作业的关键连接载体,其质量直接决定作业安全、焊接精度与生产效率。当前市场上,焊把线品牌数量激增,但产品质量差距悬殊,部分产品存在导电效率低、耐候性差、易老化…

【Prompt学习技能树地图】单一思维链优化-自我一致性提示工程原理、实践与代码实现 - 教程

【Prompt学习技能树地图】单一思维链优化-自我一致性提示工程原理、实践与代码实现 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

基于MATLAB的倒立摆控制实现方案

基于MATLAB的倒立摆控制实现方案,包含PID控制与神经网络(DQN)控制的双重实现一、系统建模与基础参数 %% 倒立摆动力学参数 m = 0.1; % 摆杆质量 (kg) M = 1.0; % 小车质量 (kg) l = 0.5; % 摆杆长度 (m) g…

2025 年展会服务商最新推荐排行榜:聚焦一站式服务与高效执行能力的优质企业榜单瓷砖/暖通/照明/门窗/玻璃/厨卫/卫浴/灯饰展会厂家推荐

在全球化商务交流不断深化的当下,展会已成为建材、石材、瓷砖、暖通等建筑装饰领域企业展示品牌、拓展市场、达成合作的核心平台。然而,当前展会服务市场中,部分服务商存在经验匮乏、资源薄弱、服务模式滞后等问题,…

数据迁移mysql--sr

mysql-docker安装docker run -itd \-p 3306:3306 \-v /home/mysql/conf:/etc/mysql/conf.d \-v /home/mysql/data:/var/lib/mysql \-v /home/mysql/log:/var/log/mysql \-e MYSQL_ROOT_PASSWORD=root \-e TZ=Asia/Shan…

iOS 26 App 开发阶段性能优化全流程,从监控到调优的多工具协作实践

本文聚焦iOS 26 App 开发阶段性能优化,构建从监控、剖析到调优的完整闭环。通过 Instruments、KeyMob(克魔)、iMazing、Energy Diagnostics 等多工具协作, 实现 CPU/GPU/内存/能耗多维监控与优化,让开发阶段提前完…

MATLAB实现语音去混响与去噪

一、概念噪声:通常指加性背景噪声,如风扇声、人群嘈杂声、电流声等。其特点是与原始语音信号是相加关系。 混响:由声音在封闭空间内经墙壁、天花板等表面多次反射形成。它使语音听起来有“回音”,导致发音模糊、清…

风险评估的流程和各阶段的工作内容

风险评估的流程和各阶段的工作内容请简述一下风险评估流程及各阶段工作内容 确定风险评估的目标 明确风险评估要达到的目的 确定风险评估的范围 明确评估对象如某信息系统,明确评估边界,明确不在评估范围内的内容 组…

无穷小和无穷大

无穷小量 \(\lim_{x\rightarrow \infty} f(x) = 0\),\(f(x)\) 为当 \(x\rightarrow \infty\) 的无穷小。 \(\lim_{n \rightarrow \infty} x_n = 0\),\({x_n}\) 当 \(n\rightarrow \infty\),\(x_n\)为当 \(n \righta…