C++ -- string函数的使用(三)

C++ -- string函数的使用(三)

目录

string中比较常用的是operator[],+=,遍历和迭代器

push_back和append

push_back:尾插一个字符
append:尾插一个string对象或者是常量字符串
在这里插入图片描述
intmain(){ string s("hello world"); s.push_back('x);// hello worldx s.append("yyy");// hello worldyyyreturn0;}

insert

在这里插入图片描述
insert(0,“hello world”):第一个参数表示0位置,第二个参数表示插入的字符串
insert(0,1,ch):参数一:下标,参数二:插入字符的个数,参数三:要插入的字符
insert(s.begin(),ch):迭代器区间的头插
intmain(){ string s("hello world"); s.insert(0,"hello r");// hello rhello world s.insert(10,"zzz");// hello worlzzzd // 插入单个字符char ch ='a'; s.insert(0,1,ch);// ahello world s.insert(s.begin(), ch);// aahello world// 在10下标位置插入p s.insert(0,"p"); s.insert(s.begin(), ch); cout << s << endl;return0;}

erase

在这里插入图片描述
erase:删除字符
intmain(){ string s("hello world"); s.erase(0,1);// 0下标位置,删除字符的个数 s.erase(s.begin());// 迭代器的头删 s.erase(6,1);// 在6下标位置删除一个字符 s.erase(6);// 不给要删除的长度,后面全删除 s.erase(--s.end());// 尾删 s.erase(s.size()-1,1);// 尾删 s.erase(0,4);// 0下标位置删除4个字符return0;}

replace

在这里插入图片描述
replace:替换
intmain(){ string s("hello world"); s.replace(5,1,"%%");// 第5个下标位置,一个字符,替换的字符// 将一个空格替换位%%return0;}

substr

在这里插入图片描述
substr:取字符串的子串
intmain(){ string s("hello world"); s.substr(0,5);// hello // 取下标位0到4的字符 s.substr(0);// 从下标位0开始取到字符串结束return0;}

find

在这里插入图片描述
find:正着找查找string/字符串/字符返回其开始的下标(并且是第一次找到的位置)
intmain(){ string s("test.cpp"); size_t pos = s.find('.'); string suffix = s.substr(pos);// .cpp// 如果不给长度的话,从pos位置开始取字符知道字符串结束return0;}

rfind

在这里插入图片描述
rfind:倒着找查找string/字符串/字符返回其开始的下标(并且是第一次找到的位置)
rfind('.');// 倒着找第一个返回find('.');// 正着找第一个返回

windows:
Linux:/
\:对 \ 转义为 \

<< 和 >>

<< 和 >> 重载之后才能使用string中重载过了

operator+

在这里插入图片描述
为什么要重载成全局的呢?为什么不重载为成员函数?
因为成员函数中第一个参数的位置被this指针占据,是类类的指针*const
运算符重载的成员函数要求第一个参数是类类型的参数string + stringstring + const char*const char* + stringstring + charchar + string

operator +=

在这里插入图片描述
operator += :相当于push_back,在字符串的末尾插入一个字符或者是一个字符串或常量字符串

geline

在这里插入图片描述
getline:默认遇到 \n 就结束,遇到空格不会结束,但是也可以自己设置结束的标识符比如是 *
cin 和scanf:只能提取一个字符串,遇到 \n 或空格就结束
string str;getline(cin,str);getline(cin,str,终止符);// 终止符比如可以是:'*'// str是你输入的字符串

输入是hello world
输出也是hello world

Read more

直流无刷电机FOC控制算法

直流无刷电机FOC控制算法

文章目录 * 1、FOC概述 * 1.1 FOC控制算法介绍 * 2、无刷电机 * 2.1 无刷电机介绍 * 2.2 无刷电机和永磁同步电机的区别 * 2.3 无刷电机的控制原理 * 2.3.1 无刷电机工作原理 * 2.3.2 直流无刷电机驱动原理 * 2.3.2.1 有感直流无刷电机六步换相驱动原理 * 2.3.2.2 直流无刷电机FOC控制原理 * 3、无刷电机FOC控制算法 * 3.1 FOC控制算法整体流程 * 3.2 FOC算法Clarke变换 * 3.2.1 Clarke变换公式推导 * 3.2.2

By Ne0inhk
Flutter 三方库 async_extension 的鸿蒙化适配指南 - 实现具备高级异步编排算法与流操作扩展的并发工具集、支持端侧复杂业务流的函数式处理实战

Flutter 三方库 async_extension 的鸿蒙化适配指南 - 实现具备高级异步编排算法与流操作扩展的并发工具集、支持端侧复杂业务流的函数式处理实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 async_extension 的鸿蒙化适配指南 - 实现具备高级异步编排算法与流操作扩展的并发工具集、支持端侧复杂业务流的函数式处理实战 前言 在进行 Flutter for OpenHarmony 的大规模异步业务系统(如实时行情刷新、多源数据聚合)开发时,如何更优雅地处理 Future 的超时竞争、Stream 的防抖(Debounce)或复杂的并发队列控制?虽然 Dart async 包提供了基础功能,但 async_extension 进一步扩展了异步编程的边界,提供了更符合函数式范式的工具。本文将探讨如何在鸿蒙端构建极致、高效的异步处理链路。 一、原直观解析 / 概念介绍 1.1 基础原理 该库通过对 Dart 核心异步类的非侵入式扩展(Extensions)

By Ne0inhk
计算机毕业设计必看必学~基于springboot大学生实习管理系统的设计与实现,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!

计算机毕业设计必看必学~基于springboot大学生实习管理系统的设计与实现,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!

springboot大学生实习管理系统 摘要 随着大学生实习的日益重要和广泛普及,建立一套高效、便捷的大学生实习管理系统对于高校和学生都具有重要意义。本文基于Spring Boot框架,设计并开发了一套大学生实习管理系统,旨在提供一个全面、可靠的平台,方便学生、教师和企业进行实习管理。 该系统采用了前后端分离的架构,前端使用Vue.js技术栈开发,后端使用Spring Boot框架搭建。系统实现了学生信息管理、实习岗位发布与申请、实习评分等功能。学生可以通过系统查看自己的实习信息、提交实习报告和评价,并与企业和指导老师进行沟通交流。教师可以管理学生的实习任务、审核实习报告以及评定实习成绩。企业可以发布实习岗位、筛选学生申请,并进行实习任务的管理和评价。 在系统实现过程中,充分考虑了用户体验和安全性。通过合理的权限控制机制,确保不同角色用户只能访问其具备权限的功能。同时,系统也提供了数据备份和恢复功能,保障数据的安全性和可靠性。 实际测试结果表明,该系统具有良好的稳定性和可用性,满足了大学生实习管理的需求。用户对系统的易用性和功能完善性给予了积极评价。 综上所述,本文设计和开

By Ne0inhk