news 2026/4/16 12:47:07

C++string类常用的库函数和全局函数2——补充

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++string类常用的库函数和全局函数2——补充

.c_str

上来第一个就是重量级。C++为了兼容C语言,所以在string中,给了一个C的接口:c_str()

因为C++可能需要使用到C语言的东西,比如函数fopen等,传string格式字符串给C语言的函数,

就会报错,因为C语言只支持C格式的字符串,也就是 const char* 类型,不支持string类型

为了解决这个问题,C++提供了c_str()函数,可将string类型的字符串转换成const char*

用法如图,c_str 是成员函数,用对象名调用即可,编译器自动使用函数底层实现转换。

如图,程序正常运行,说明c_str确实将字符串转换成了const char*类型。


2.find 和 rfind,substr

find

这是find函数,string的成员函数。最常用的就是图中红框的第四个:

从pos位置开始正向查找字符c,找到了返回该字符索引,没找到返回npos

代码语言:javascript

AI代码解释

string filename("Test.cpp"); size_t pos = filename.find('.'); //找到‘'.' 的索引,并返回给pos if(pos != string::npos) { cout<< filename[pos] <<endl; //打印pos位置的值,也就是 ‘.’ }

使用例子如图。第二个参数 pos有缺省值0,所以默认是从0位置开始找

也可以从指定位置开始找,只需要改变第二个参数,比如:filename.find('.',3);

此时就会从第4个字符开始找 (3是索引)

substr

从 pos 位置开始,拷贝 len 个长度的子字符串然后 传值返回,其中pos默认为0,len默认为npos

第一行:从索引4的位置,拷贝长度为4的子字符串,然后传值返回

第二行:从索引4的位置,拷贝到结尾(缺省值npos),然后传值返回


知道了这两个函数,我们就可以综合使用,用来查找后缀(suffix),如果只有一个 ' . '

此时会返回:.cpp

但如果,fillname中有多个 ‘ . ’ ,那么从前往后找就只能找到第一个 ‘ . ’ ,想找到后缀很困难

此时就需要rfind


rfind

rfind 和 find一样,唯一的区别是:rfind 是反向查找

反向查找第一个 ‘ . ’ 就很好地解决了刚刚的问题:

此时会输出:.cpp

因为rfind的作用是反向查找,直接找到最后一个点

学会上面的几个函数,就可以来一个小应用分段取出协议,域名地址等不难,就是注意find后,下一次find的边界问题。


3.getline

getline的作用就是可以读取一整行数据,哪怕其中有空格。 cin遇到空格就截断

所以某种意义上,getline是有用处的getline是全局函数。

如图,分别遇到两次空格,然后截断读取,所以导致后面的无法输出。

但如果是用getline:

它保留了空格,并且继续向后读取,直到我输入了换行符。(默认换行符为终止符)

我们也可以自定义终止符:比如我用 ' g ' :

如图,换行符并不会中止读取了,而是 g ,遇到 g 时读取停止,但此时并未结束程序

此时还可以继续输入数据,但并不会读取:

需要再按一次 enter 键,才能终止程序运行。


4.operator< (cmp类)

这些函数是 全局函数。为了更灵活的比较。

其实有很多种,但是只需要讲其中一个,就能秒懂其他的,因为它们逻辑都高度相似

我们来讲< : 比较两个C风格或者string类型的字符串,若表达式为真,则返回true(1),否则返回false(0)

重点:比较字符串比较什么?是按照ASCII 码表的值,从头开始一对一比较,相同则各自往后移动一个数据,再次进行比较,直到出结果为止

请注意:<< 运算优先级大于 < ,所以不加括号就错了(先运行:cout<<s1)。所以 对比时 尽量加上括号,不然可能会报错。

图中输出的结果是1(true),说明表达式结果正确 , 原因是 5 的ASCII 码值 小于 6.

其他的比较函数也一样

blog.csdn.net/2509_93923299/article/details/156137192
blog.csdn.net/2509_93923299/article/details/156137395
blog.csdn.net/2509_93923299/article/details/156137441
blog.csdn.net/2509_93923299/article/details/156137423
blog.csdn.net/2509_93923299/article/details/156137378
blog.csdn.net/2509_93923299/article/details/156137363
blog.csdn.net/2509_93923299/article/details/156137349
blog.csdn.net/2509_93923299/article/details/156137211
blog.csdn.net/2509_93923299/article/details/156137460
blog.csdn.net/2509_93923260/article/details/156138441
blog.csdn.net/2509_93923260/article/details/156138524
blog.csdn.net/2509_93923260/article/details/156138543
blog.csdn.net/2509_93923260/article/details/156138367
blog.csdn.net/2509_93923260/article/details/156138388
blog.csdn.net/2509_93923260/article/details/156138295
blog.csdn.net/2509_93923260/article/details/156138415

www.dongchedi.com/article/7586104283570340414
www.dongchedi.com/article/7586107772832940568
www.dongchedi.com/article/7586105171260801598
www.dongchedi.com/article/7586103844216504856
www.dongchedi.com/article/7586105032132051480
www.dongchedi.com/article/7586105437142417944
www.dongchedi.com/article/7586104244311769625
www.dongchedi.com/article/7586103373234356761
www.dongchedi.com/article/7586103016810971672
www.dongchedi.com/article/7586105462731440664
www.dongchedi.com/article/7586103797324218942
www.dongchedi.com/article/7586103300483973694
www.dongchedi.com/article/7586102611422511678
www.dongchedi.com/article/7586102949072437822
www.dongchedi.com/article/7586108028160836121
www.dongchedi.com/article/7586372917312012824
www.dongchedi.com/article/7586373081946800702
www.dongchedi.com/article/7586373137030677017
www.dongchedi.com/article/7586374371732685374
www.dongchedi.com/article/7586376512555958809
www.dongchedi.com/article/7586375382136816190
www.dongchedi.com/article/7586376917411463704
www.dongchedi.com/article/7586378437947015742
www.dongchedi.com/article/7586377210039501374
www.dongchedi.com/article/7586378517827912217
www.dongchedi.com/article/7586372861272031806

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:43:58

Excalidraw实战:绘制电商平台订单状态机图

Excalidraw实战&#xff1a;绘制电商平台订单状态机图 在一次跨时区的远程产品评审会上&#xff0c;团队正为“用户支付后能否取消订单”争论不休。后端说逻辑不允许&#xff0c;产品经理却坚称需求文档写了支持。这时有人打开了一张手绘风格的状态机图——箭头清晰地从“待支付…

作者头像 李华
网站建设 2026/4/11 10:17:58

Excalidraw新增动画演示功能,讲解图表更生动

Excalidraw新增动画演示功能&#xff0c;讲解图表更生动 在一场远程技术评审会上&#xff0c;架构师正试图通过屏幕共享解释一个复杂的微服务调用链。他面对的却是一个满屏交错的箭头和方框——观众眉头紧锁&#xff0c;有人小声问&#xff1a;“能不能先只看主流程&#xff1f…

作者头像 李华
网站建设 2026/4/16 12:44:45

Excalidraw被写入多所高校计算机课程实验指导书

Excalidraw&#xff1a;当手绘白板走进高校课堂&#xff0c;重塑计算机教学的表达方式 在一次《软件工程》实验课上&#xff0c;教师刚布置完“设计一个在线订餐系统”的任务&#xff0c;学生们便迅速进入了一个共享的虚拟白板房间。没有打开Visio或Figma&#xff0c;也没有翻找…

作者头像 李华
网站建设 2026/4/16 6:36:53

Excalidraw如何优化移动端触控体验?最新更新说明

Excalidraw如何优化移动端触控体验&#xff1f;最新更新说明 在移动办公和远程协作日益普及的今天&#xff0c;越来越多的技术团队依赖可视化工具进行头脑风暴、系统设计与原型绘制。Excalidraw 作为一款开源的手绘风格虚拟白板工具&#xff0c;凭借其极简界面、实时协同能力和…

作者头像 李华
网站建设 2026/4/13 22:07:43

Excalidraw新增搜索功能,快速定位画布内容

Excalidraw 新增搜索功能&#xff1a;让复杂画布也能秒级定位 在一场紧张的产品评审会上&#xff0c;团队正围绕一张包含三十多个微服务组件的架构图展开讨论。有人突然提问&#xff1a;“订单状态同步是怎么处理的&#xff1f;” 会议室里一片沉默——不是没人知道答案&#x…

作者头像 李华
网站建设 2026/4/11 21:38:52

Excalidraw绘图协作权限细分到字段级别

Excalidraw绘图协作权限细分到字段级别 在分布式团队成为常态的今天&#xff0c;可视化协作早已不再是“锦上添花”的辅助手段&#xff0c;而是产品设计、系统架构和跨职能沟通的核心环节。一张共享的白板&#xff0c;可能承载着整个项目的逻辑脉络——从数据库结构到前端交互流…

作者头像 李华