简单的英文网站模板/广州seo推广运营专员
一.string类
1.1为什么学习string类?
1.2.标准库中的string类
string类的文档介绍
1. 字符串是表示字符序列的类2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3. string 类是使用 char( 即作为它的字符类型,使用它的默认 char_traits 和分配器类型 ( 关于模板的更多信 息,请参阅basic_string) 。4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits 和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。5. 注意,这个类独立于所使用的编码来处理字节 : 如果用来处理多字节或变长字符 ( 如 UTF-8) 的序列,这个 类的所有成员( 如长度或大小 ) 以及它的迭代器,将仍然按照字节 ( 而不是实际编码的字符 ) 来操作。
1. string 是表示字符串的字符串类2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作 string 的常规操作。3. string 在底层实际是: basic_string 模板类的别名, typedef basic_string<char, char_traits, allocator> string;4. 不能操作多字节或者变长字符的序列。 在 使用string类时,必须包含#include头文件以及using namespace std;
二.string对象的元素访问
2.1.1使用operator[]与at实现访问
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello");//构造for (size_t i = 0; i < s.size(); i++)//读{cout << s[i] << " ";}cout << endl;for (size_t i = 0; i < s.size(); i++){cout << s.at(i) << " ";}cout << endl;for (size_t i = 0; i < s.size(); i++)//写,at同理{cout << s[i]+=1 << " ";}}
operator[]与at的区别:
operator[]在元素越界访问时,采用断言,at采用抛出异常
2.1.2正向迭代器访问
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");string::iterator it = s.begin();while (it != s.end())//读{cout << *it << " ";it++;}cout << endl;it = s.begin();while (it != s.end())//写{*it += 1;cout << *it << " ";}cout << endl;return 0;
}
2.1.3反向迭代器访问
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");string::reverse_iterator it = s.rbegin();while (it != s.rend())//读{cout << *it << " ";it++;}cout << endl;it = s.rbegin();while (it != s.rend())//写{*it += 1;cout << *it << " ";}cout << endl;return 0;
}
2.1.4const正向迭代器(不能修改)
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");string::const_iterator it = s.begin();while (it != s.end())//读{cout << *it << " ";it++;}cout << endl;return 0;
}
2.1.5const反向迭代器(不能修改)
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");string::const_reverse_iterator it = s.rbegin();while (it != s.rend())//读{cout << *it << " ";it++;}cout << endl;return 0;
}
2.1.6范围for
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");for(auto ch:s)//无法修改{cout<<ch<<" ";}for(auto& ch:s)//可以修改{ch+=1;cout<<ch<<" ";}return 0;
}
三.string类对象的常见构造
string() 重点 | 无参构造函数 |
string(const char* s) 重点 | 用字符串构造对象 |
string(size_t n,char c) 重点 | 用n个字符构造对象 |
string(const string& s) 重点 | 拷贝构造 |
string(const string& str,size_t pos,size_t len=npos) | 用str从下标(包括)之后len长度的内容,构造对象 |
string(const char* s,size_t n) | 用字符串前n个构造对象 |
template <class InputIterator first,InputIterator last> string(InputIterator first,InputIterator last) | 迭代器区间构造对象 |
注:第四个构造方法,中的npos,是string类中的一个被static修是的,类型为size_t(无符号整形),值为-1

#include<iostream>
#include<string>
using namespace std;int main()
{string s1;//无参构造string s2("abcdefg");//用字符串构造对象string s3(5, 's');//string类对象中包含n个字符string s4(s2);//拷贝构造string s5(s2, 0, 3);//用str从下标(包括)之后len长度的内容,构造对象string s6("abcdefg", 3);//用字符串前n个构造对象string s7(s6.begin(), s6.end());//迭代器区间构造对象cout << "s1=" << s1 << endl;cout << "s2=" << s2 << endl;cout << "s3=" << s3 << endl;cout << "s4=" << s4 << endl;cout << "s5=" << s5 << endl;cout << "s6=" << s6 << endl;cout << "s7=" << s7 << endl;return 0;
}
三. string类对象的容量操作
size (重点) | 返回字串有效字符长度 |
length | 返回字符串有效长度 |
capacity | 返回空间总大小 |
empty (重点) | 检测字符串是否为空串,是返回true,否则返回false |
clear (重点) | 清空有效字符 |
reserve (重点) | 为字符串预留空间 |
resize (重点) | 将有效字符个数改成n个,多出的空间用字符c填充 |
1.reverse(修改总容量)
#include<iostream>
#include<string>
using namespace std;int main()
{string s("hello C++");cout << s.size() << " " << s.capacity() << endl;s.reserve(100);cout << s.size() << " " << s.capacity() << endl;s.reserve(10);cout << s.size() << " " << s.capacity() << endl;return 0;
}
reserve用于预开空间,如果开辟的空间小于原空间,并不会改变容量
#include<iostream>
#include<string>
using namespace std;int main()
{//resize(n)// resize(size_t n,char x)//分三种情况//1. n<size//2. n>size && n<=capacity//3. n>capacitystring s("hello world");s.resize(10);//cout << s.size() << " " << s.capacity() << " " << s<<endl;s.resize(17);//将size改为17,多出来的用'\0'填充cout << s.size() << " " << s.capacity() << " " << s<<endl;s.resize(40, 'x');//将size改为40,多出来的位置用'x'填充cout << s.size() << " " << s.capacity() << " " << s<<endl;return 0;
}
resize用于调整size,当n大于容量是,会扩容,并用对于的字符填充。
当n>size && n< 容量时,用对应的字符填充多出来的
当n<size 时,会缩容放弃超过的空间。
1. size() 与 length() 方法底层实现原理完全相同,引入 size() 的原因是为了与其他容器的接口保持一致,一般情况下基本都是用 size() 。2. clear() 只是将 string 中有效字符清空,不改变底层空间大小。3. resize(size_t n) 与 resize(size_t n, char c) 都是将字符串中有效字符个数改变到 n 个,不同的是当字 符个数增多时:resize(n) 用 0 来填充多出的元素空间, resize(size_t n, char c) 用字符 c 来填充多出的 元素空间。注意:resize 在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大 小,如果是将元素个数减少,底层空间总大小不变。4. reserve(size_t res_arg=0) :为 string 预留空间,不改变有效元素个数,当 reserve 的参数小于 string的底层空间总大小时, reserver 不会改变容量大小。
四. string类对象的修改操作
push_back | 在字符串后尾插字符c |
append | 在字符串后追加一个字符串 |
operator+= ( 重点) | 在字符串后追加字符串 str |
c_str ( 重点 ) | 返回 C 格式字符串 |
find + npos ( 重点 ) | 从字符串 pos 位置开始往后找字符 c ,返回该字符在字符串中的位置 |
rfind | 从字符串 pos 位置开始往前找字符 c ,返回该字符在字符串中的位置 |
substr | 在 str 中从 pos 位置开始,截取 n 个字符,然后将其返回 |
find
//从pos位置开始找,str
size_t find (const string& str, size_t pos = 0) const noexcept;//从pos位置开始找字符串第一次出现的下标,若不存在返回npos
size_t find (const char* s, size_t pos = 0) const;//从pos位置找字符串s的前n个第一次出现的下标,不存在返回npos
size_t find (const char* s, size_t pos, size_type n) const;size_t find (char c, size_t pos = 0) const noexcept;
通常finf与substr配合使用对找一个网址对应的协议,域名,地址
#include<iostream>
#include<string>
using namespace std;int main()
{
//string s3("https://legacy.cplusplus.com/reference/string/string/rfind/");string s3("ftp://www.baidu.com/?tn=65081411_1_oem_dg");// 协议// 域名// 资源名string sub1, sub2, sub3;size_t i1 = s3.find(':');if (i1 != string::npos)sub1 = s3.substr(0, i1);//查找协议elsecout << "没有找到i1" << endl;size_t i2 = s3.find('/', i1+3);if (i2 != string::npos)sub2 = s3.substr(i1+3, i2-(i1+3));//查找域名elsecout << "没有找到i2" << endl;sub3 = s3.substr(i2 + 1);//查找地址cout << sub1 << endl;cout << sub2 << endl;cout << sub3 << endl;
}
五.string类非成员函数
operator+ | 尽量少用,因为传值返回,导致深拷贝效率低 |
operator>> (重点) | 输入运算符重载 |
operator<< (重点) | 输出运算符重载 |
getline (重点) | 获取一行字符串 |
istream& getline(istream& in, string&str, char delim);//从流提取中提取字符串到str中,直到delim或'\n'istream& getline(istream& in,string& str, char);//从流提取中取字符串到str
六.将string对象int互相转换
6.1stoi 将string里第一次遇到的数字字符转换成int


6.2, to_string 将数字转化成string对象

相关文章:

C++中string类的使用
一.string类 1.1为什么学习string类? C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便, C 标准库中提供了一些 str 系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP 的思想&#x…...

LeeCode每日刷题12.8
搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …...

硕士毕业论文格式修改要点_word
目录 0、最开始要做的事情1、更改样式(先善器)2、多级标题(解决自动更新问题必要的基础设置)2、插入图片(1)设置一个图片样式——“无间隔”(2)插入题注(3)修…...

远红外温和护理,一贴缓解痛风不适
在冬天,很多人都会因为痛风等原因引起的关节炎症而感到不适,因为关节疼痛、肢体麻木等问题会对生活质量造成很大的影响。市场上缓解关节酸痛的护理品很多,常见的应该还是关节贴,我现在用的就是何浩明关节痛风贴。 相比于同类产品&…...

优化 SQL 日志记录的方法
为什么 SQL 日志记录是必不可少的 SQL 日志记录在数据库安全和审计中起着至关重要的作用,它涉及跟踪在数据库上执行的所有 SQL 语句,从而实现审计、故障排除和取证分析。SQL 日志记录可以提供有关数据库如何访问和使用的宝贵见解,使其成为确…...

Java设计模式-工厂模式
目录 一、简单工厂模式 (一)需求 (二)使用传统的方法来完成 (三)传统方法的优缺点 (四)基本介绍 (五)使用简单工厂模式 二、工厂方法模式 ࿰…...

每天五分钟计算机视觉:稠密连接网络(DenseNet)
本文重点 在前面的课程中我们学习了残差网络ResNet,而DenseNet可以看成是ResNet的后续,我们看一下图就可以看出二者的主要区别了。 特点 DenseNet是一种卷积神经网络,它的特点是每一层都直接连接到所有后续层。这意味着,每一层都接收来自前一层的输出,并将其作为输入传递…...
mysql支持的整数类型、各类型整数能够表示的数值范围
MySQL :: MySQL 8.2 Reference Manual :: 11.1.2 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT mysql支持的整数有:TINYINT、SMALLINT、MEDIUMINT、INT(INT和INTEGER是同义词)、BIGINT,各…...

我不是DBA之慢SQL诊断方式
最近经常遇到技术开发跑来问我慢SQL优化相关工作,所以干脆出几篇SQL相关优化技术月报,我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到,尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…...

JavaScript基础知识整理(最全知识点, 精简版,0基础版)
文章目录 一、输入和输出内容 1.1 输出 1.1.1 在浏览器的控制台输出打印 1.1.2 直接在浏览器的页面上输出内容 1.1.3 页面弹出警告对话框 1.2 输入 二、变量 2.1 变量是什么 2.2 变量的声明和赋值 2.3 变量的命名规范和规范 三、变量扩展(数组) 3.1 数组…...

人工智能和网络安全:坏与好
人工智能似乎可以并且已经被用来帮助网络犯罪和网络攻击的各个方面。 人工智能可以用来令人信服地模仿真人的声音。人工智能工具可以帮助诈骗者制作更好、语法正确的网络钓鱼消息(而糟糕的语法往往会暴露出漏洞),并将其翻译成多种语言&…...

基于SSH的java记账管理系统
基于SSH的java记账管理系统 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 项目类型:Java EE项目 项目名称:基于SSH的记账管理系统 项目架构:B/S架构 开发语言:Java语言 前端技术:HTML、CS…...

github可访问但无法clone问题
github可访问但无法clone问题 重置 http.proxy 重置 http.proxy git config --global http.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0.0.1:1080 git config --global --unset http.proxy git config --global --unset https.proxy...

WebGL笔记:图形缩放的原理和实现
缩放 1 )原理 缩放可以理解为对向量长度的改变,或者对向量坐标分量的同步缩放 如下图,比如让向量OA 收缩到点B的位置,也就是从OA变成OB,缩放了一半 2 )公式 已知 点A的位置是(ax,ay,az)点A基于原点內缩了…...

前端学习--React(5)
一、useReducer 管理相对复杂的状态数据 定义一个reducer函数,根据action值的不同返回不同的状态 在组件中调用useReducer并传入reducer函数和状态的初始值 事件发生时,通过dispatch函数分派一个对象,即通知reducer具体返回哪个状态对应的操…...

【数据结构】平衡树引入
数据结构-平衡树 前置知识 二叉树二叉树的中序遍历 问题 维护一个数据结构,支持插入元素、删除元素、查询元素的排名、查询排名对应的元素、查询元素的前驱、查询元素的后继等。 BST(二叉搜索树) 作为一个基本无效(很容易卡掉…...

机器视觉相机镜头光源选型
镜头选型工具 - HiTools - 海康威视 Hikvisionhttps://www.hikvision.com/cn/support/tools/hitools/cl8a9de13648c56d7f/ 海康机器人-机器视觉产品页杭州海康机器人股份有限公司海康机器人HIKROBOT是面向全球的机器视觉和移动机器人产品及解决方案提供商,业务聚焦于…...

Appium:iOS测试比Android测试更难?
iOS测试与Android测试: Appium 是一个开源的自动化测试框架,用于iOS、Android和Web应用程序。它允许开发者使用自己的语言来编写测试脚本,并且可以运行在多种平台上。 就Appium本身而言,它为iOS和Android提供了相似的测试能力和…...

使用c#罗列、监视、控制进程
个人简介:本人多年从事研发和测试领域工作,有一定的经验; 口号:懒人推动科技进步,学习编程啊脚本啊目的就是要将人从做相同的工作脱离出来,手懒可以但是脑子不能懒,让重复的事情自动完成,能动一下就完成任务就不能动两下,懒到极致才是目标! 方向:本人不怎么将理论的…...

Vue:绘制图例
本文记录使用Vue框架绘制图例的代码片段。 可以嵌入到cesium视图中,也可以直接绘制到自己的原生系统中。 一、绘制图例Vue组件 <div v-for="(color, index) in colors" :key="index" class="legend-item"><div class="color-…...

Web(8)SQL注入
Web网站(对外门户) 原理:not>and>or(优先级) 一.低级注入 order by的作用是对字段进行排序,如order by 5,根据第五个字段 进行排序,如果一共有4个字段,输入order by 5系统就会报错不 …...

kafka入门(三):kafka多线程消费
kafka消费积压 如果生产者发送消息的速度过快,或者是消费者处理消息的速度太慢,那么就会有越来越多的消息无法及时消费,也就是消费积压。 消费积压时, (1) 可以增加Topic的分区数,并且增加消费组的消费者数量&#…...

android通过广播打印RAM信息
通过广播打印ram相关log 参数说明: 广播:com.android.settings.action.RAM_INFO int型参数index:0 - 3h, 1 - 6h, 2 - 12h, 3 - 24h 代表过去时间app使用ram情况(平均/最大占用) Index: frameworks/base/services/cor…...

C++新经典模板与泛型编程:策略类模板
策略类模板 在前面的博文中,策略类SumPolicy和MinPolicy都是普通的类,其中包含的是一个静态成员函数模板algorithm(),该函数模板包含两个类型模板参数。其实,也可以把SumPolicy和MinPolicy类写成类模板—直接把algorithm()中的两…...

微信小程序引入Vant Weapp修改样式不起作用,使用外部样式类进行覆盖
一、引入Vant Weapp后样式问题 在项目中使用第三方组件修改css样式时,总是出现各种各样问题,修改的css样式不起作用,没有效果,效果不符合预期等。 栗子(引入一个搜索框组件)实现效果: 左侧有一个搜索文字背景为蓝色,接着跟一个搜索框 wxml <view class"container&q…...

python核酸检测 青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析2022年6月
目录 python核酸检测 一、题目要求 1、编程实现 2、输入输出...

搭建React项目,基于Vite+React+TS+ESLint+Prettier+Husky+Commitlint
基于ViteReactTSESLintPrettierHuskyCommitlint搭建React项目 node: 20.10.0 一、创建项目 安装包管理器pnpm npm i pnpm -g基于Vite创建项目 pnpm create vitelatest web-gis-react --template react-ts进入项目目录安装依赖 $ cd web-gis-react $ pnpm i启动项目 $ pnpm…...

ChatGPT在国内的使用限制,国内的ChatGPT替代工具
人工智能技术的发展不仅改变了我们的生活方式,也在各行各业发挥着越来越重要的作用。ChatGPT(Generative Pre-trained Transformer)作为一种先进的自然语言处理模型,由OpenAI推出,其在生成人类般流畅对话方面表现出色。…...

服务器如何保证数据安全_Maizyun
服务器如何保证数据安全 在当今的数字化时代,数据安全已经成为企业和社会组织必须面对的重要问题。服务器作为存储和处理大量数据的核心组件,必须采取有效的措施来确保数据的安全。本文将探讨服务器如何保证数据安全。 一、访问控制和身份认证 访问控…...

sql2005日志文件过大如何清理
由于安装的时候没有计划好空间,默认装在系统盘,而且又没有做自动备份、截断事务日志等,很快LDF文件就达到十几G,或者几十G ,此时就不得不处理了。 备份和计划就不说了,现在就说下怎么把它先删除吧…...