STL(一)字符串string

RK3566/RK3588 NPU性能实测:用mobilenet模型快速验证你的开发板NPU是否正常工作 本文提供了RK3566/RK3588开发板NPU性能实测指南,通过MobileNet模型快速验证NPU是否正常工作。详细介绍了环境搭建、测试资源获取、编译运行及结果分析的全流程,帮助开发者高效验证神经网络加速器功能,为后续AI应用部署奠定基础。 阅读详情

引入

在C语言中,一般使用字符数组char str[]来存放字符串,但是操作麻烦,容易出错。
C++ 在 STL 中加入了 string 类型,对字符串常用的需求功能进行了封装,使得操作起来更加方便,且不必担心内存是否足够、字符串的长度等问题。

使用方法

定义与初始化

// string的定义
string str;

// string的初始化
string str = "abc"; // 多个小写字母

赋值

// string的定义
string str;

// string的赋值
str = "123"; // 多个数字字符

输入输出

普通读入

cin 读到空格或换行停止

string str;
cin >> str;  // 字符串读入
cout << str; // 字符串输出

整行读入

getline(),string 的整行输入,回车键之前的内容都会被记录进 string 里

string str;
getline(cin, str); // 整行读入
cout << str; // 字符串输出

整行读入 特殊情况

整行读入的特殊情况:

若题目的输入格式为:给出一个nnn,表示之后有nnn行,每行给定一个带空格的字符串。样例输入:
4
ab cd
hello world
hhh2
zpr zpr

如果直接按照以下代码:

int n;
string s;
cin >> n;
for(int i = 1; i <= n; i++){
    getline(cin, s);
}

会发现只能输入333行字符串,原因是输入444之后,此时按了一下换行,再输入 ab cd。
这一个换行会被第一个getline读进去,因为它是以换行作为分割的,第一个读入的东西是空白的。
正确的写法:

int n;
string s;
cin >> n;
getline(cin, s); // 这句话读入不到任何信息,只是为了吃掉 n 后面的换行 
for(int i = 1; i <= n; i++){
    getline(cin, s);
}

字符串拼接

string 字符串之间能通过 “+” 运算进行拼接

string s1 = "abc", s2 = "def";
string s = s1 + s2;
cout << s << endl;
cout << s.size() << endl; // 获取字符串长度

substr函数

截取字符串的一个子串,substr 包含两个参数,第一个参数是开始截取的下标:start,第二个参数是截取的长度 length(很多同学会认为第二个参数是截取的终点,这是错误的,请终重点记忆)。若不写第二个参数,则截取到字符串尾。
函数内部做了保护,如果长度超过了字符串尾,就到字符串尾为止。

string s = "hello";
s.substr(start, length);

insert函数

在字符串的中间插入一个字符串,t.insert(pos, s)
在字符串的 position 位置前面插入一个字符串 s。其中第一个参数是位置,第二个位置是字符串,表示要被插入的字符串。

string s = "hello", t = "world";
s.insert(2, t);
cout << s << endl;

find函数

查找字符串中是否有某一个子串。若能够找到,则返回这个子串起始位置的下标;若不能,则返回一个特别的标记 s.npos。

int main(){
    string s = "hello", t = "ll";
    if(s.find(t) != s.npos){
        cout << s.find(t);
    }else{
        cout << "t is not exist";
    }
}

reverse 函数

// 翻转字符串   s.begin(): 字符串首地址  s.end(): 字符串尾地址的后一位
string s;
cin >> s;
reverse(s.begin(), s.end())
cout << s << endl;

操作总结与扩展

  1. 以下标的形式访问字符串中的元素:s[i]
  2. 字符串拼接:+
  3. 判断字符串 s 是否为空:s.empty()
  4. 返回字符串 s 中字符个数:s.size()或s.length()
  5. 截取 s 字符串中从 i 开始,长度为 len 的子串:s.substr(i, len)
  6. 在字符串 s 的 pos 的位置前插入一个字符串t:s.insert(pos, t)
  7. 查找在字符串中第一个出现的字符串 t 的位置,查不到返回 4294967295(npos):s.find (t)
  8. 元素翻转:reverse(s.begin(), s.end())
用 SAP Fiori Launchpad Content Manager 做目录传输:把 Catalog 变更稳稳送到目标系统 摘要:SAP Fiori项目中,目录传输是确保应用一致交付的关键环节。开发团队常遇到目录在不同系统/客户端间不一致的问题,核心在于理解Launchpad内容管理的两种作用域:系统级(/UI2/FLPCM_CONF)使用workbench请求跨系统传输,客户端级(/UI2/FLPCM_CUST)通过customizing请求按SCC4设置传输。混淆作用域会导致目录分叉,如系统级目录被客户端本地修改后形成独立副本。官方推荐使用Content Manager而非过时的Launchpad Designer,并强调手 阅读详情

相关推荐

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

STL之string用法详解

STL之string详解

qq_55537010的博客 2272

Python与PyCharm安装配置教程:从零搭建开发环境

编程入门的第一步是搭建开发环境,而Python解释器与IDE工具的选择常让新手困惑。Python作为解释型语言,负责将代码翻译为机器指令,而PyCharm作为集成开发环境,提供代码编辑、调试与项目管理功能,两者协同工作构成高效开发基础。环境变量PATH的配置是安装过程中的关键环节,正确处理可避免“python不是内部或外部命令”的常见错误。理解pip包管理机制,则能轻松安装第三方库并管理项目依赖。从下载官方安装包到运行第一个Hello World程序,再到利用虚拟环境隔离应用依赖,这套流程适用于Window

benben 683

25STL之String类型

STL之String类型STL之String类型 String概念 初始化构造函数 存取字符 和char类型的转换 比较操作 字符串连接 查找和替换 删除和插入 算法相关 1.String概念  string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。

lzjsqn的专栏 797

Unity卡通渲染实战:原神PMX模型Blender转FBX全流程

卡通渲染是二次元游戏开发的核心技术之一,其本质在于对光照模型、顶点色控制与边缘光生成的精准建模。本文从基础概念切入,解析MMD PMX格式的数据结构原理,阐明顶点色(Vertex Color)与Toon Ramp贴图在风格化渲染中的技术价值;进而覆盖Blender到Unity的跨引擎资产流转关键路径,重点解决法线校准、骨骼命名适配、FBX导出参数配置等工业级断点问题;最终落地于Unity内置管线与URP双环境下的卡通Shader定制与Render Feature实现。内容聚焦原神风格角色资产重铸实践,涵盖P

weixin_38166557的博客 435

Intel网卡固件烧录实战:eeupdate与bootutil命令完全解析

固件作为硬件设备底层运行的软件,其稳定性直接决定硬件功能的完整性。网卡固件一旦损坏,常表现为MAC地址丢失、PXE启动失效、NVM数据异常导致降速或掉线。维护这类问题,需借助Intel官方工具eeupdate与bootutil在UEFI Shell或DOS环境下执行底层烧录操作。eeupdate负责网卡的身份信息与NVM存储管理,可重置MAC、恢复固件镜像;bootutil则专管启动行为,支持PXE配置与Boot Agent升级。从环境准备、命令参数到故障恢复,掌握这两款工具能让运维人员在修复存量网卡、应对

weixin_34269583的博客 312

STL之字符串类模板 string(一)、C++ string类库简介

前言 在最初的 C 语言中,头文件 string.h 提供了一系列字符串函数。早期的 C++ 也为处理字符串提供了类。string 类由头文件 支持,该类包含了大量方法及若干构造函数,用于将字符串赋给变量、合并字符串、比较字符串和访问各个元素的重载操作符、查找字符和子字符串的方法等。到目前为止,string 已被用户广泛接受及使用。 C++ 从 C 继承的字符串概念仍然是以 ‘\0’ 为结束符的...

学无止尽,谨言慎行! 766

Python白色飘雪(完整代码)

Python绘制白色飘雪动画的完整代码。

AIGC 3万+

【C++】STL 容器 - string 字符串操作 ① ( string 字符串 简介 | string 字符串 与 char* 字符串 对比 | string 构造函数 )

一、string 字符串 简介 1、string 字符串 与 char* 字符串 对比 2、string 构造函数 3、代码示例 - string 构造函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 514

【YOLO】YOLOV5-Seg的Segment模块解析

Segment模块同时输出检测结果和分割掩模,通过轻量级分割头实现实时实例分割

浩瀚之水的专栏 598

【异常】OpenClaw提示Message ordering conflict - please try again. If this persists, use /new to start a fr

摘要:OpenClaw助手出现"Message ordering conflict"异常时,表明会话消息排序冲突,主要由消息队列时序错乱、会话同步异常或上下文过载引起。解决方案包括:1)基础重试暂停后单发指令;2)最优方案是发送/new重置会话;3)极端情况下需重启客户端或检查指令格式。预防建议包括避免高频并发指令、定期重置会话及确保网络稳定。该报错属业务层异常,不影响账号安全。

奶爸的编程之路,也就一周冷个三天 422

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(一)

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(一)

祯的博客 1853

2025电赛嵌入式:K210教程-如何刷固件 如何烧录代码 全网唯一

本文介绍了K210开发板的固件刷写和开发环境搭建方法。主要内容包括:1)从Sipeed官网下载合适的MaixPy固件,根据需求选择完整版或精简版;2)使用k-flash等工具烧录固件,注意区分亚博和Sipeed开发板的固件版本;3)介绍了擦除闪存的两种模式(部分擦除和完全擦除)及其应用场景;4)搭建CanMV开发环境,通过MaixPy IDE连接开发板并进行程序调试。文章还提供了常见问题的解决方法,如串口驱动安装、固件兼容性检查等,为K210开发提供了完整的入门指南。

FJN110的博客 546

STL和string类

STL和string类STL和string类 STL和string类 string类虽然不是STL的组成部分,但设计它时考虑到了STL,例如,它包含begin()、end()、rbegin()和rend()等成员,因此可以使用STL接口。 例:显示一个词的字母得到所有的排列组合。排列组合就是重新安排容器中元素的顺序。next_permutation()算法将区间内容转换为下一种排列顺序方式。按照字母递增的顺序进行。成功返回true,区间处于最后的序列中,则返回false。要得到区间内容的所有排列组合,应从最

weixin_50866517的博客 299

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++之定义字符串

在C++中有两种字符串的概念: 1 string类。 在C++中,字符串大多数时候用来指代string类。这时C++ STL中的一个类,包含了各种常用的字符串操作。定义方法为 string var; 或 string var(init_list); 或 string var = init_value; 由于string为类,定义时实际上是定义了一个对象,而初始化方式也就决定了调用何种构造函数来进行...

zxyhhjs2017的博客 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

第二期:STL 线性容器精讲 —— vector, string, deque 的妙用

欢迎来到本系列的第二期!在算法竞赛中,我们打交道最多的就是各种“序列”——一组数字、一个字符串、一个操作序列。如何高效地存储和操作这些序列,直接决定了我们解题的效率和代码的性能。STL 提供了多种线性容器,但vectorstringdeque无疑是其中最重要、最高频的三个。深度剖析:不仅学习其用法,更要理解其背后的动态扩容机制,这是面试和性能优化的关键。玩转:掌握其丰富的常用操作,并了解其小字符串优化 (SSO)的“黑科技”。认识std::deque:理解其“双端队列”的实现原理,以及它在何种场景下优于。

dl999666的博客 983

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++ 用字符构造字符串/char转换成string类对象

如何通过字符构造字符串 一、通过STL库String类构造函数 strA = "Hello World."; char ch; std::cin >> ch; strA += string(1, ch); 二、字符串流 stringstream ss; string str; ss << ch; ss >> str; 显然后一种方法稍显复杂,前一种在开发过程中更为实用,不过流操作用途十分广泛,有兴趣的小伙伴可以多加深究。 ...

m0_49288319的博客 657

char LPSTR LPCSTR TCHAR string

2009-02-25 15:52在使用C++开发程序的时候,处理文本比较麻烦。主要是由于历史的原因。C++对于字符的标注类型是char.但是没有定义char的大小。默认为一个字节,这样就不能处理Unicode了。所以C++标准将这个问题留给了开发者。<br />微软在使用C/C++的时候,为了处理这个问题,就定义了几个typedef。那就是CHAR、WCHAR、TCHAR、LPSTR和LPCSTR,其中:<br />CHAR 表示一个字节的字符<br />WCHAR 表示两个字节的字符<br />TCHAR

myworldbig的专栏 952

中国铁路网矢量shp数据获取与处理实战:从坐标系到缓冲区分析

在GIS工程中,矢量数据是空间分析的基石,而铁路网作为线性要素,其shp数据的质量直接决定项目成败。Shapefile由几何、索引与属性表等多个文件构成,坐标系(WGS84、CGCS2000、GCJ02)的混乱是数据不可用的头号原因。通过OpenStreetMap与国家基础地理信息中心等正规渠道获取的铁路网数据,经投影转换、拓扑修复与属性清洗后,可用于缓冲区分析、物流选址及人口覆盖评估。本文结合真实项目经验,详解从数据获取、QGIS/ArcGIS预处理到多源数据融合的完整链路,帮助读者避开坐标系错乱、属性乱

weixin_34129696的博客 338

C++入门之string(一)

STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而是一个包罗数据结构和算法的软件框架string的实例化类①编码----->utf-8②编码------>utf-16③编码----->utf-32④宽字符字符串,用于兼容旧版 Windows API:早期美国制定的编码,只用 1 个字节的低 7 位,只能表示英文字母、数字和符号,无法支持其他语言。:它不是一种 “存储格式”,而是一套,给全世界几乎所有字符分配了唯一的数字编号(码点)。

2401_88780354的博客 174

【C++】C++STL详解(一)—— string类

今天我们认识并具体学习了STL中string类,开启了STL学习的大门。接下来,我们将进行STL中string类的模拟实现。希望我的文章和讲解能对大家的学习提供一些帮助。

Sherry的博客 768

STL (一) string基本用法

C++ STL中的string类是标准库核心组件,提供高效字符串操作。文章详细介绍了string的构造方法(默认、拷贝、子串等)、多种遍历方式(operator[]、迭代器、范围for等)、容量操作(size/capacity/reserve/resize)以及常用功能:元素访问(at)、清空(clear)、插入删除(insert/erase)、查找替换(find/replace)、子串提取(substr)等。特别讲解了字符串输入问题(getline用法)和关系运算符重载,

C/C++技术栈 1万+

C++STL详解(一)—— string类

文章目录C++STL详解(一) —— sring类一、string的定义方式二、string的插入三、string的拼接四、string的删除五、string的查找六、string的比较七、string的替换八、string的交换九、string的大小和容量十、string中元素的访问十一、string中运算符的使用十二、string中与迭代器相关的函数 C++STL详解(一) —— sring类 本次内容大纲: 一、string的定义方式 string类实现了多个构造函数的重载,常用的构造函数如下: st

2021dragon的博客 9300

【STL】STL之string详解

C++STL之string详解

行码棋 4万+

【C++】STL简介 及 string的使用详解

STL简介 及 string的使用讲解

m0_70980326的博客 4006

【C++STL:string类(一)】最高效的STL学习法:从string类开始,教你如何阅读官方文档

上篇文章我们已经介绍了STL是什么(不仅是是C++标准库的重要组成部分,还是一个包罗数据结构与算法的软件框架,STL版本(原始版本HP版本P.J.版本、RW版本以及SGI版本),STL的六大组件(迭代器、仿函数、算法——简单算法、空间配置器、容器、配接器),STL的重要性(三个维度:笔试、面试、工作)以及学习方法总结(三种境界:能用、明理、能扩展),本文博主就带大家正式进入STL的第一个容器——string类的学习。)函数名称功能说明string()(重点)构造空的string类对象,即空字符串。

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 2114
上一篇: AtCoder Beginner Contest 318 D题 General Weighted Max Matching
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值