C++(13)——string

上篇文章中介绍了string中部分函数的用法,本篇文章将继续对其他的函数进行介绍:
 

1. substr:

string substr (size_t pos = 0, size_t len = npos) const;

substr函数的两个参数如上述代码所示,此函数的主要作用是根据一个已有的string的对象的起始坐标pos开始,以长度len为范围内的内容生成一个新的string类型的对象。主要用于对一个已有的string类型的对象进行分隔。例如:

	string s1("hello world hello everyone");string s2 = s1.substr(0,5);string s3 = s1.substr(6, 5);string s4 = s1.substr(12, 5);string s5 = s1.substr(18, 8);cout << s2 << endl;cout << s3 << endl;cout << s4 << endl;cout << s5 << endl;

运行结果如下:

上面说到,substr常用于做一个已有string类型的对象的内容分离,在进行分离时,常常会和find一起进行使用。例如对于cplusplus官网中对于substr函数的说明的网站链接如下:
https://legacy.cplusplus.com/reference/string/string/substr/

 

string s1("https://legacy.cplusplus.com/reference/string/string/substr/");size_t pos = s1.find(':');string s2, s3, s4, s5, s6;s2 = s1.substr(0, pos);cout << s2 << ' ' << endl;size_t pos1 = s1.find('/',pos+3);s3 = s1.substr(pos + 3, pos1 - pos - 3);cout << s3 << ' ' << endl;size_t pos2 = s1.find('/', pos1 + 1);s4 = s1.substr(pos1 + 1, pos2 - pos1 - 1);cout << s4 << ' ' << endl;s5 = s1.substr(pos2 + 1);cout << s5 << endl;

运行结果如下:

2. find_first_of: 

size_t find_first_of (const string& str, size_t pos = 0) const;size_t find_first_of (const char* s, size_t pos = 0) const;size_t find_first_of (const char* s, size_t pos, size_t n) const;

对于find_first_of函数,其大体意义如下:给定一个strting类型的对象或者字符串或者字符,在不给定参数的情况下,在给定的上述三个类型中,从另一个strting类型的对象中寻找上述三个类型的内容,并且返回他们的坐标,下面将给出其中几个函数的使用方法:

2.1 size_t find_first_of (const string& str, size_t pos = 0) const:

例如:给定一个字符串"aeiou",同时存在一个string类型的对象,其内容为:

"Please, replace\, \, the\, \, vowels \, \, in\, \, this \, \, sentence \, \, by \, \, asterisks."
如果需要将上述对象中所有在字符串中出现的字母,即aeiou替换为*:

string str("Please, replace the vowels in this sentence by asterisks.");size_t pos = str.find_first_of("aeiou");while (pos != str.npos){str[pos] = '*';pos = str.find_first_of("aeiou");}cout << str << '\n';

对于上述代码,起运行结果为:

 

2.2  size_t find_first_of (const char* s, size_t pos = 0) const:

此函数的使用方法与上一小节中的方法相同,只是参数的类型发生了改变,故不再赘述。

2.3 size_t find_first_of (const char* s, size_t pos, size_t n) const:

依旧是使用小节2.1中的例子:

假如只需要将给定字符串"aeiou"的前两个字母在string类型的对象出现时替换为'*'

string str("Please, replace the vowels in this sentence by asterisks.");size_t pos = str.find_first_of("aeiou",0,2);while (pos != str.npos){str[pos] = '*';pos = str.find_first_of("aeiou",0,2);}cout << str << '\n';return 0;

运行结果如下:

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

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

相关文章

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…

RK3566 linux加入uvc app

SDK中external/uvc_app/目录提供了将板卡模拟成uvc camera的功能。 一、buildroot使能uvc_app 1、进入到buildroot目录 在sdk目录下执行以下命令&#xff1a; cd buildroot 2、选择defconfig 执行命令&#xff1a; source build/envsetup.sh 输入数字然后回车选择板卡&…

(C++) list底层模拟实现

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 首先&#xff0c;list底层是一个带头双向循环链表&#xff0c;再一个&#xff0c;我们还要解决一个问题&#xff0c;list的迭代器&#xff0c;vector和string的迭代器可以直接&#xff0c;是因为他们的地址空间是连续的&…

An Association-Based Fusion Method for Multi-Modal Classification

F ∈ { C o n c a t ; A d d } \in\{Concat;Add\} ∈{Concat;Add} 辅助信息 作者未提供代码

Red Hat Enterprise Linux 9.3 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。需要注意的不同主板默认或者自行配置的固件类型不一致&#xff0c;引导界面有所不同。也就是说使用UEFI和BIOS的安装引导界面是不同的&#xff0c;如图所示。若手动调…

[C#]C# winform部署yolov8目标检测的openvino模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【openvino介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是由Intel推出的&#xff0c;用于加速深度学习模型推理的工具套件。它旨在提高计算机视觉和深度学…

HarmonyOS鸿蒙学习基础篇 - 什么是HarmonyOS

概述 HarmonyOS是华为开发的一款面向未来的全场景分布式智慧操作系统&#xff0c;将逐步覆盖18N全场景终端设备&#xff1b; 对消费者而言 HarmonyOS用一个‘统一的软件系统’ 从根本上解决消费者面对大量智能终端体验割裂的问题&#xff0c;为消费者带来同意便利安全的智慧化全…

【C语言】编译和链接深度剖析

文章目录 &#x1f4dd;前言&#x1f320; 翻译环境和运行环境&#x1f309;翻译环境 &#x1f320;预处理&#xff08;预编译&#xff09;&#x1f309;编译 &#x1f320;词法分析&#x1f320;语法分析 &#x1f309;语义分析&#x1f320;汇编 &#x1f309; 链接&#x1f…

dns正反解析配置

1.配置正向解析baidu.com 1、下载bind包 [rootlocalhost ~]# yum install bind -y 2、对配置文件修改 [rootlocalhost ~]# vim /etc/named.conf 3、对数据文件修改 [rootlocalhost ~]# vim /var/named/baidu 4、重启服务 [rootlocalhost ~]# systemctl restart named.service 5…

数据分析中常用的指标或方法

一、方差与标准差二、协方差三、皮尔逊系数四、斯皮尔曼系数五、卡方检验六、四分位法和箱线图七、 一、方差与标准差 总体方差 V a r ( x ) σ 2 ∑ i 1 n ( x i − x ˉ ) 2 n ∑ i 1 n x i 2 − n x ˉ 2 n E ( x 2 ) − [ E ( x ) ] 2 Var(x)\sigma^2\frac {\sum\l…

端口映射的定义、特点、场景、实例、常见问题回答(Port Mapping)

目 录 一、端口映射&#xff08;Port Mapping&#xff09; 二、端口映射应用场景&#xff08;什么时候用到端口映射&#xff09; &#xff08;一&#xff09;、使用端口映射的条件 &#xff08;二&#xff09;使用端口映射的具体场景 三、端口映射技术的特点 …

Redis--Geo指令的语法和使用场景举例(附近的人功能)

文章目录 前言Geo介绍Geo指令使用使用场景&#xff1a;附近的人参考文献 前言 Redis除了常见的五种数据类型之外&#xff0c;其实还有一些少见的数据结构&#xff0c;如Geo&#xff0c;HyperLogLog等。虽然它们少见&#xff0c;但是作用却不容小觑。本文将介绍Geo指令的语法和…