String2⃣️-string类对象的修改操作

目录

string类对象的修改操作

1.push back ;append;operator+=

2.assign;insert 

 3.erase;replace

4.rfind

5.substr

6.c_str

补充

1.reverse(逆置 反转)

 2.Sort


string类对象的修改操作

1.push back ;append;operator+=

push back:在字符串后尾插字符c

append:在字符串后追加一个字符串

operator+=:在字符串后追加字符串str

void test_string7()
{
    string s1("hello world");
    cout << s1 << endl;

    s1.push_back('x');
    cout << s1 << endl;

    s1.append(" yyyyyy!!");
    cout << s1 << endl;

    string s2("111111");

    s1 += 'y';
    s1 += "zzzzzzzz";
    s1 += s2;
    cout << s1 << endl;
}
输出结果:
hello world
hello worldx
hello worldx yyyyyy!!
hello worldx yyyyyy!!yzzzzzzzz111111

2.assign;insert 

 

void test_string8()
{
    string s1("hello world");
    cout << s1 << endl;

    s1.assign("111111");//将s1重新置为 111111
    cout << s1 << endl;//输出:111111

    // 慎用,因为效率不高 -> O(N)
    // 实践中需求也不高
    string s2("hello world");
    s2.insert(0, "xxxx");
    cout << s2 << endl;//输出:xxxxhello world

//    char ch = 'y';
//    cin >> ch;
//    s2.insert(0, 2, ch);//第0个位置,插入2个ch
//    cout << s2 << endl;

    s2.insert(s2.begin(), 'y');//用迭代器插入
    cout << s2 << endl;

    s2.insert(s2.begin(), s1.begin(), s1.end());//将s1以迭代器方式插入s2的0号位置
    cout << s2 << endl;
}
输出结果:
hello world
111111
xxxxhello world
yxxxxhello world
111111yxxxxhello world

 3.erase;replace

void test_string9()
{
    string s1("hello world");
    cout << s1 << endl;
    
    // erase效率不高,慎用,和insert类似,要挪动数据
    s1.erase(0, 1);
    cout << s1 << endl;//移出第0个位置的字符
    
    //s1.erase(5);
    s1.erase(5, 100);//移除第5个开始以后所有位置的字符(因为最大长度小于100)
    cout << s1 << endl;
}

 

void test_string9()
{
    // replace效率不高,慎用,和insert类似,要挪动数据
    string s2("hello world");
    s2.replace(5, 1, "%20");//在第五个位置,横跨一个长度 改为%20
    cout << s2 << endl;

    string s3("hello world hello bit");
    for (size_t i = 0; i < s3.size(); )
    {
        if (s3[i] == ' ')
        {
            s3.replace(i, 1, "%20");
            i += 3;
        }
        else
        {
            i++;
        }
    }
    cout << s3 << endl;

    string s4("hello world hello bit");
    string s5;
    for (auto ch : s4)
    {
        if (ch != ' ')
        {
            s5 += ch;
        }
        else
        {
            s5 += "%20";
        }
    }
    cout << s5 << endl;
}

int main(){
    test_string9();
    return 0;
}

 

4.rfind

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

int main(){
    string ss = "hello world";
    cout << ss.rfind("world") << endl;
    return 0;
}

 

5.substr

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

int main(){
    string ss = "Greatness it is just something we made up";
    int find = ss.rfind("it");
    cout << ss.substr(find) << endl;
    cout << ss.substr(find,2) << endl;

    return 0;
}
void test_string12()
{
	string file("string.cpp.zip");
	size_t pos = file.rfind('.');
	//string suffix = file.substr(pos, file.size() - pos);
	string suffix = file.substr(pos);

	cout << suffix << endl;
}

 

6.c_str

返回char格式字符串

int main(){
    string s1 = "hello world";
    char *c1 = new char[s1.size()];
    strcpy(c1, s1.c_str());
    
    for(int i = 0; i < s1.size()/sizeof(c1[0]); i++){
        cout << c1[i];
    }
    cout << endl;
    return 0;
}

补充

1.reverse(逆置 反转)

int main(){
    string ss = "hello world";
    reverse(ss.begin(), ss.end());
    cout << ss << endl;
    return 0;
}
输出结果:
dlrow olleh

 2.Sort

void test_string6()
{
    string s1("hello world");
    cout << s1 << endl;

    // s1按字典序排序
    sort(s1.begin(), s1.end());
    cout << s1 << endl;
    // 第一个和最后一个参与排序
    sort(++s1.begin(), --s1.end());
    cout << s1 << endl;

    // 前5个排序 [0, 5)
    sort(s1.begin(), s1.begin()+5);

    cout << s1 << endl;
}


int main(){
    test_string6();
    return 0;
}

输出结果:
hello world
 dehllloorw
 dehllloorw
 dehllloorw

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题 | 贪心算法07】4.29(用最少数量的箭引爆气球、无重叠区间)

文章目录 12.用最少数量的箭引爆气球12.1题目12.2解法&#xff1a;贪心12.2.1贪心思路12.2.2代码实现 13.无重叠区间13.1题目13.2解法&#xff1a;贪心13.2.1贪心思路13.2.2代码实现 12.用最少数量的箭引爆气球 12.1题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面…

Kafka 3.x.x 入门到精通(08)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;08&#xff09;——对标尚硅谷Kafka教程 5. Kafka优化5.1 资源配置5.1.1 操作系统5.1.2 磁盘选择5.1.3 网络带宽5.1.4 内存配置5.1.5 CPU选择 5.2 集群容错5.2.1 副本分配策略5.2.2 故障转移方案5.2.3 数据备份与恢复 5.3 参数配置优化5.4 数…

如何在WordPress中设置网站的SEO标题和描述

在WordPress中&#xff0c;想要让你的网站在搜索引擎结果中脱颖而出&#xff0c;设置优秀的SEO标题和描述至关重要。这不仅可以帮助搜索引擎更好地理解你的网站内容&#xff0c;还可以吸引更多的点击率和流量。而选择一款合适的SEO插件是实现这一目标的关键之一。让我们来看看两…

电路邱关源学习笔记——3.6结点电压法

1.结点电压法 以结点电压为未知量列写电路方程分析电路的方法。适用于结点较少的电路。 基本思想 选取结点电压为未知量&#xff0c;则KVL自动满足&#xff0c;无需列写KVL方程。各支路电流、电压可视为结点电压的线性组合。求出结点电压之后&#xff0c;便可方便地得到各支路…

怎样批量将jpg图片转换成HEIC格式?jpg快速转换成HEIC图片

heic格式和jpg格式图片大家都很熟悉了。那么这两种图片格式的区别是什么&#xff1f;哪种格式图片更好一些&#xff1f; 一&#xff0c;区别&#xff1a;jpg和HEIC的区别 1&#xff0c;jpg格式有良好的压缩性能和良好的重建质量而被广泛应用于图像和视频处理中。 2&#xff…

代码随想录刷题随记29-贪心3

代码随想录刷题随记29-贪心3 1005.K次取反后最大化的数组和 leetcode链接 比较简单&#xff0c;首先对数组进行绝对值排序&#xff0c;然后如果是负数从小到大进行反转 如果是正数&#xff0c;就对一个绝对值最小的一直翻转 按照绝对值排序的实现可以通过重写比较器实现 cla…

ComfyUI-AniPortrait——数字人插件

仓库地址&#xff1a;GitHub - chaojie/ComfyUI-AniPortrait 往期学习资料 整理AI学习资料库 需要的模型如下 工作流如下&#xff1a; 首先把上面的sd-vae-ft-mse、wav2vec2-base-960h模型放到下面的目录&#xff0c;如下 其他模型放到哪里都行&#xff0c;反正是自定义模型…

ThreeJs模拟工厂生产过程八

这节算是给这个车间场景收个尾&#xff0c;等了几天并没有人发设备模型给我&#xff0c;只能自己找了一个凑合用了。加载模型之前&#xff0c;首先要把货架上的料箱合并&#xff0c;以防加载模型之后因模型数量多出现卡顿&#xff0c;方法和之前介绍的合并传送带方法相同&#…

uniapp视频播放器(h5+app)

关于uniapp视频播放器遇到的一些问题&#xff0c;mark下。 中途遇到了很多问题&#xff0c;如果有相同的伙伴遇到了类似的&#xff0c;欢迎交流 官方的video播放器在app上不友好&#xff0c;有以下功能不支持。 loadedmetadata、controlstoggle不支持导致只能手写控制层。 不…

集成框架 -- OSS

前言 接入oss必须有这两个文档基础 使用STS临时访问凭证访问OSS_对象存储(OSS)-阿里云帮助中心 前端上传跨域 正文 sts前后端通用&#xff0c;开通图示 AliyunSTSAssumeRoleAccess 后端实现代码 public static void main(String[] args) {String regionId "cn-ha…

Oracle 表分区

1.概述 分区表就是将表在物理存储层面分成多个小的片段&#xff0c;这些片段即称为分区&#xff0c;每个分区保存表的一部分数据&#xff0c;表的分区对上层应用是完全透明的&#xff0c;从应用的角度来看&#xff0c;表在逻辑上依然是一个整体。 目的&#xff1a;提高大表的查…

2024年北京市中小学生信息学能力测评活动BCSP-X小学低年级组初赛测试题(模拟题)

一、单项选择&#xff08;共 15 题&#xff0c;每题 2 分&#xff0c;共计 30 分&#xff0c;每题有且仅有一个正确选项&#xff09; 不可以作为c中的变量名的是&#xff08; &#xff09;。 A. I以下loveChinaB. I_loveChinaC. I_love_ChinaD. i_loveChina 在体育课上&#xf…

teamOS协作通知,我的新晋办公搭子,完美把控项目动态,再也不担心错过协作变更了,谁也不能背着我偷偷内卷

有没有碰到过这样的情况&#xff0c;在企业网盘中建了新项目的协作组&#xff0c;和团队成员一起做项目&#xff0c;正常来说应该是能更好的完成工作。 但是现实就是&#xff0c;项目文件修改了&#xff0c;如果不用微信或者其他方式发个通知&#xff0c;团队成员往往都不知道…

selenium 4.x 入门(环境搭建、八大元素定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试&#xff0c;还需要记录、调试网页的细节 一、selenium4.x环境搭建 一键搭建 pip3 install webdriver-helper 有建议要 1.0.1 版本的&#xff0c;但本人按上面的是可以正常使用&#xff08;看…

计算机科学与技术就业方向和前景怎么样

计算机科学与技术专业的就业方向极为广泛&#xff0c;方向可以是软件开发与工程、网络与信息安全、数据科学与大数据分析等&#xff0c;几乎渗透到现代社会的每一个角落。以下是上大学网 &#xff08;www.sdaxue.com)对计算机科学与技术专业一些主要的就业方向及其前景分析&…

【Redis 开发】Redis哨兵

哨兵 作用和原理服务状态监控选举新的master 搭建哨兵集群RedisTemplate的哨兵模式 作用和原理 Redis提供了哨兵机制来实现主从集群中的自动故障恢复&#xff1a; 哨兵也是一个集群 监控&#xff1a;会不断检查master和slave是否按预期工作自动故障恢复&#xff1a;如果mast…

基于FPGA的数字信号处理(2)--什么是定点数?

在实际的工程应用中&#xff0c;往往会进行大量的数学运算。运算时除了会用到整数&#xff0c;很多时候也会用到小数。而我们知道在数字电路底层&#xff0c;只有「高电平1」和「低电平0」的存在&#xff0c;那么仅凭 0和1 该如何表示小数呢&#xff1f; 数字电路中&#xff0…

SpringBoot实现图片上传(个人头像的修改)

SpringBootlayui实现个人信息头像的更改 该文章适合对SpringBoot&#xff0c;Thymeleaf&#xff0c;layui入门的小伙伴 废话不多说&#xff0c;直接上干货 Springbootlayui实现头像更换 前端公共部分代码 HTML页面代码 <div class"layui-card-header" style&quo…

IP定位技术企业网络安全检测

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为企业运营中不可忽视的一环。在众多网络安全技术中&#xff0c;IP定位技术以其独特的优势&#xff0c;为企业网络安全检测提供了强有力的支持。本文将深入探讨IP定位技术在企业网络安全检测中的应用及其…

QT学习之读取xml中信息

背景&#xff1a; 我们每次注册后会生成对应的启动码文件&#xff0c;格式如下&#xff0c;启动码最后要在测试工具使用的进行一个验证&#xff0c;验证通过后模块才能使用。所以我希望每次的xml都放在一个文件夹里&#xff0c;等我选择文件夹后&#xff0c;能提取所有xml中的对…