【STL】string类 (下)

目录

1,insert

2,erase

3,find

4,replace

5,rfind

6,substr

7,find_first_of

8,find_first_not_of

9,find_last_of

10,operator+

11,getline


1,insert

在 pos 位置之前插入字符串

#include<iostream>
#include<string>
using namespace std;int main()
{string s1("hello world");s1.insert(0, "xx");cout << s1 << endl;s1.insert(0,2,'y');cout << s1 << endl;s1.insert(s1.begin(),'z');cout << s1 << endl;string s2("iiiiiiiiii");s1.insert(0,s2, 5);cout << s1 << endl;return 0;
}

2,erase

擦除范围字符串

int main()
{string s1("hello world");s1.erase(5, 4);cout << s1 << endl;s1.erase(1);cout << s1 << endl;return 0;
}

3,find

int main()
{string s1("hello world");size_t pos = s1.find('l',0);cout << s1[pos] << endl;pos = s1.find("ll", 1);cout << pos << endl;return 0;
}

4,replace

从 pos 位置开始,用 n 个字符替换;

int main()
{string s1("hello world");s1.replace(0, 2, "xx");cout << s1 << endl;s1.replace(0, 5,"yyy");cout << s1 << endl;return 0;
}

上述可以看到,第一个替换从下标 0 开始用两个字符也就是 ” he “ 替换 “ xx ” ;

第二个替换是从下标 0 开始用5个字符也就是 “ hello ” 替换 “ yyy ”;

给大家写一个替换字符的题目

将字符串中的空格都替换成其他字符串

int main()
{string s1("hello world hello bit");size_t pos = s1.find(" ", 0);while (pos != string::npos){s1.replace(pos, 1, "%20");pos = s1.find(" ", pos + 3);}cout << s1 << endl;return 0;
}

查找字符然后进行替换,然后在查找再替换直到查找不到为止退出;

5,rfind

从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

int main()
{string s1("hello world");size_t pos = s1.rfind('l',3);cout << pos << endl;pos = s1.rfind('l', 10);cout << pos << endl;pos = s1.rfind('o');cout << pos << endl;pos = s1.find("l");cout << pos << endl;pos = s1.rfind("l");cout << pos << endl;return 0;
}

6,substr

在 str 中从 pos 位置开始,截取 n 个字符,然后将其返回

int main()
{string s1("hello world");string s2=s1.substr(2, 3);cout << s2 << endl;string s3 = s1.substr(0);cout << s3 << endl;return 0;
}

我们再写一个查找后缀的程序;

int main()
{string s1("test.cpp");string s2("code.jbp");size_t pos = s1.rfind('.');if(pos != string::npos){string buff = s1.substr(pos);cout << buff << endl;}pos = s2.rfind('.');if(pos != string::npos){string buff = s2.substr(pos);cout << buff << endl;}return 0;
}

我们再写一个分离字符串的小程序

int main()
{string str("https://legacy.cplusplus.com/reference/string/string/substr/");size_t pos = str.find(':');string buff = str.substr(0, pos+1);cout << buff << endl;size_t pos1 = str.find('/',pos+3);buff = str.substr(pos + 1, pos1-pos);cout << buff << endl;size_t pos2 = str.rfind('/');buff = str.substr(pos1 + 1, pos2-pos1);cout << buff << endl;return 0;
}

7,find_first_of

直接看代码兄弟们

int main()
{string str("Please, replace the vowels in this sentence by asterisks.");size_t pos = str.find_first_of("abc");while (pos != string::npos){str.replace(pos, 1,"*");pos = str.find_first_of("abc",pos);}cout << str << endl;return 0;
}

8,find_first_not_of

与 find_first_of 功能相反,返回不属于字符串的下标

int main()
{string str("Please, replace the vowels in this sentence by asterisks.");size_t pos = str.find_first_not_of("abc");while (pos != string::npos){str.replace(pos, 1,"*");pos = str.find_first_not_of("abc",pos+1);}cout << str << endl;return 0;
}

9,find_last_of

跟 find_first_of 类似,只不过 find_last_of 是从后往前找的;

来个例子:

void SplitFilename(const std::string& str)
{std::cout << "Splitting: " << str << '\n';std::size_t found = str.find_last_of("/\\");std::cout << " path: " << str.substr(0, found) << '\n';std::cout << " file: " << str.substr(found + 1) << '\n';
}int main()
{std::string str1("/usr/bin/man");std::string str2("c:\\windows\\winhelp.exe");SplitFilename(str1);SplitFilename(str2);return 0;
}

10,operator+

int main()
{string s1("hello world");string s2("abcdefg");string s3 = s1 + s2;cout << s3 << endl;s1 = s2 + "666";cout << s1 << endl;s2 = "999" + s2;cout << s2 << endl;return 0;
}

11,getline

我们正常的输入是使用 cin

int main()
{string s1;//我们输入 hello worldcin >> s1;cout << s1 << endl;return 0;
}

但是 cin 遇到空格就会停下来,所以我们引入了 getline ;

int main()
{string s1;getline(cin, s1);cout << s1 << endl;cout << endl;//我们输入 hello worldcin >> s1;cout << s1 << endl;return 0;
}

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

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

相关文章

10_7iic整体框架流程

在内核中 这边把iic整个流程分成了 4层 iic_dtiver at24_iic_eeprom 也就是我们的自己的驱动 i2c-core.c 核心层 i2c/busses/i2c-s3c2410.c 控制器层 平台总线驱动层,或者也是图中的设备树 硬件描述 我们假设 板子上有三个iic控制器 0 1 2 这里在控制器0 上挂载了gt24c02的eep…

针对无法创建JDK8版本的SpringBoot项目

自从昨日起&#xff0c;JDK突然改版了&#xff0c;不能在使用JDK8来进行创建Spring Boot项目了&#xff0c;导致目前小编的JDK无从下手~~ 因此&#xff0c;在仔细琢磨了一晚之后&#xff0c;想起来了以下几个方法&#xff0c;与大家共勉。希望能够得到大家的认可&#xff01; …

远程工具无法连接VMware虚拟机 (Network error: Connection timed out)

windowr输入&#xff1a;services.msc ①检查window相关的Vmmare服务是否开启&#xff1a; 确保上面这个几个启动类型是自动&#xff0c;状态是正在运行。 ②排查虚拟网卡是否禁用&#xff1a; 设置->网络->更改适配器选项&#xff1a; ③检查虚拟网络编辑器以及虚拟机…

2023/11/26总结

一些学习记录&#xff1a; 在对数据库进行一系列操作的时候&#xff0c;遇到一个问题&#xff0c;在插入数据的时候&#xff0c;我数据库对应的是自增id&#xff0c;但是插入后想获取到这个id去使用。我以为是不可以马上获取的&#xff0c;然后看到 项目进度 购物车&#xff…

openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态

文章目录 openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态132.1 背景信息132.2 前提条件132.3 操作步骤132.4 参数说明132.5 示例 openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态 132.1 背景信息 openGauss支持查看整个openGauss的状态&#…

2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项竞赛正式试题

第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题 目录 一、竞赛时间 二、竞赛阶段 三、竞赛任务书内容 &#xff08;一&#xff09;拓扑图 &#xff08;二&#xff09;A模块基础设施设置/安全加固&#xff08;200分&#xff09; &#xff08;三&#xf…

Windows系统下更新后自带的画图软件出现马赛克bug

一.bug的样子&#x1f357; 在使用橡皮后&#xff0c;原来写的内容会变成马赛克。而我们希望它是纯白色的。 二.解决方法&#x1f357; 第一步 第二步 第三步 三. 解决后的效果&#x1f357; 用橡皮擦随便擦都不会出现马赛克了。 更新过后&#xff0c;想用win自带的画图软件会出…

Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现

Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现 Redis如果在没有开启认证的情况下&#xff0c;可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。–那么这也就是redis未授权访问了 Redis的默认端口是6379 可以用空间测绘搜索&#xff…

2017年五一杯数学建模C题宜居城市问题值解题全过程文档及程序

2017年五一杯数学建模 C题 宜居城市问题 原题再现 城市宜居性是当前城市科学研究领域的热点议题之一&#xff0c;也是政府和城市居民密切关注的焦点。建设宜居城市已成为现阶段我国城市发展的重要目标,对提升城市居民生活质量、完善城市功能和提高城市运行效率具有重要意义。…

牛客网刷题笔记四 链表节点k个一组翻转

NC50 链表中的节点每k个一组翻转 题目&#xff1a; 思路&#xff1a; 这种题目比较习惯现在草稿本涂涂画画链表处理过程。整体思路是赋值新的链表&#xff0c;用游离指针遍历原始链表进行翻转操作&#xff0c;当游离个数等于k时&#xff0c;就将翻转后的链表接到新的链表后&am…

Postman如何使用(三):使用数据文件

数据文件是非常强大的方式使用不同的测试数据来测试我们的API&#xff0c;以检查它们是否在各种情况下都能正常运行。我们可以认为数据文件是“Collection Runner”中每个请求的参数。下面&#xff0c;我们通过一个例子来说明如何使用数据文件。 这篇文章需要结合下面两个文件进…

Java入坑之模块化

一、Java模块化概述 1.1历史开发模式 JDK 8及以前开发模式 Java源代码以Java文件&#xff08;类/接口/注解等&#xff09;的形式编写每个Java文件被明确地放入到一个包中Java文件编译后的class文件&#xff0c;可以压缩为jar包&#xff0c;供别的程序调用一个程序可以使用类库…