c++中的String

文章目录

  • String
    • 定义对象的方式
    • 成员函数
      • operator=
      • begin/end
      • size
      • capacity
      • reserve
      • rsize
      • operator+=/append/push_back
      • operator[]/at

String

String是一个类模版,可以定义一个字符/字符串对象。
字符顺序表

定义对象的方式

定义方式有很多重要的就这几种

	string s1;string s2("hello word");string s3 = s2;string s4(s2);

成员函数

下面的成员函数中有些是很不常用的,这里会整理出常用的几个
在这里插入图片描述

operator=

让一个string对象 可以赋值成另一个 string对象/字符串/字符

int main()
{string s1 = "hello";cout << s1;return 0;
}

begin/end

begin: 配合迭代器等东西使用,指向对象的开始
end:配合的迭代器使用,指向对象的结束

	string::iterator it = s1.begin();while (it != s1.end()){cout << *it << " ";it++;}cout << endl;

size

定义的对象的长度

string s1("hello");
cout<<s1.size();

capacity

当前定义的对象的容量大小

string s1("hello");
cout << s1.capacity() << endl;

reserve

设置容量
每个编译器的容量可能大小有差异,取决于这个编译器使用什么版本的STL
如果当前对象的capacity小于reserve 那么就是扩容
在vs下是 1.5倍的扩容
在gcc下是 2倍扩容
如果 capacity>reserve 那么有可能缩容
在vs下 reserve 是不会缩容的
在gcc下 是会缩到 reserve的长度,当reserve<size,那么会缩到有效数组大小的长度(size)

int main()
{string s1;//检测扩容机制//每个编译器 扩容都不同int a = s1.capacity();string s2("hello word");s1.reserve(500);//如果确定自己需要多少空间//reserve 设置容量//不同编译器 扩容 会扩500或者以上//在vs下 reserve下 没数据下/有数据下:只会扩容//在gcc下 没数据可以缩容//有数据下如果缩的比有效数据低 那么 他会缩到 有效数据的结尾//reserve 不会影响数据  只影响容量//g++ 会根据你扩容直接扩容//vs会有对齐规则 扩容多一点

rsize

和reserve类似,rsize是设置容量,并且会影响数据
如果是扩容的话 那么他会在有效数据后扩容并且初始化成\0
resize > capacity 那么就是扩容+尾插
如果 size<n<capacity 如果在这个区间 只会插入数据
如果 n<size 删除数据 空间不变 保留前n个数据

//rsize -既影响容量 又影响数据
cout << s2.size() << endl;
cout << s2.capacity() << endl;
//resize 如果是扩容的话 那么他会在有效数据后扩容并且初始化成\0
//resize > capacity 那么就是扩容+尾插
s2.resize(100);
//s2.resize(100,'x');如果是这样子的话 就是有效数据后插入x 到size结束
cout << s2.size() << endl;
cout << s2.capacity() << endl;//如果 size<n<capacity 如果在这个区间 只会插入数据 
s2.resize(12);
cout << s2.size() << endl;
cout << s2.capacity() << endl;
//如果 n<size ->删除数据 空间不变 保留前n个数据
s2.resize(5);
cout << s2.size() << endl;
cout << s2.capacity() << endl;
cout << s2;

operator+=/append/push_back

这些都是插入成员函数
operator+= 直接尾部插入···
append 插入一个string对象/一个插入···
push_back 尾插

int main()
{string s1("hello word ");// append 插入 一个字符串 ···s1.append("dabai ");string s2 = " aaaaaaa";//+= 插入s1 += 'x';s1 += 'word';s1 += s2;

operator[]/at

下标访问

	//at()==[]string s2("hello word");cout << s2.at(20) << endl;return 0;

如果对你有帮助的话点一下赞,谢谢

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

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

相关文章

【C++】类和对象(6)--运算符重载

目录 一 概念 二 运算符重载的实现 三 关于时间的所有运算符重载 四 默认赋值运算符 五 const取地址操作符重载 一 概念 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其返回值类型&#xff0c;函数名字以及参数…

信息安全相关标准

GB/T 25070-2019 信息安全技术 网络安全等级保护安全设计技术要求 在线预览|GB/T 25070-2019 (gb688.cn) 每一级安全保护环境分为安全计算环境&#xff0c;安全区域边界&#xff0c;安全通信网络。 一级通用安全计算环境 二级通用安全 计算环境 三级 通用安全计算环境 第四级…

LM(大模型)应用开发利器之LangChain,带你走进AI世界

原文&#xff1a;LLM&#xff08;大模型&#xff09;应用开发利器之LangChain&#xff0c;带你走进AI世界 - 简书 LangChain组件图 LangChain 是什么 首先 LangChain 是一个框架&#xff0c;这个框架是用来让开发者进行 LLMs &#xff08;大语言模型&#xff09;应用开发的。…

利用ETLCloud自动化流程实现业务系统数据快速同步至数仓

现代企业有不少都完成了数字化的转型&#xff0c;而还未转型的企业或商铺也有进行数字化转型的趋势&#xff0c;由此可见&#xff0c;数据已经成为企业决策的重要依据。企业需要先获取数据&#xff0c;将业务系统数据同步至数仓进行整合&#xff0c;然后再进行数据分析。为了更…

Vue3 插槽 v-slot

插槽 视频链接&#xff1a;尚硅谷vue-插槽章节 不使用插槽的情况下 结果&#xff1a; 1 默认插槽 在子组件中只能有一个 结果&#xff1a; 2 具名插槽 #b是v-slot:b 的缩写 顾名思义就是指着名字去插入 结果&#xff1a; 3 作用域插槽 可以传递数据的插槽&#…

“轻松实现文件夹批量重命名:使用顺序编号批量改名“

你是否曾经遇到过需要批量重命名文件夹&#xff0c;却因为繁琐的手动操作而感到困扰&#xff1f;现在&#xff0c;我们为你带来了一款全新的工具——轻松实现文件夹批量重命名&#xff0c;使用顺序编号批量改名。这款工具将帮助你轻松解决文件夹重命名的问题&#xff0c;提高工…

Vue3 shallowRef 和 shallowReactive

一、shallowRef 使用shallowRef之前需要进行引入&#xff1a; import { shallowRef } from vue; 使用方法和ref 的使用方法一致&#xff0c;以下是二者的区别&#xff1a; 1. 如果ref 和 shallowRef 都传入的是普通数据类型的数据&#xff0c;那么他们的效果是一样的&#x…

python基础练习题库实验1

题目1 使用以下变量 product_code“377B” product_name“牛肉汤” product_size“250mL” product_price2.15 使用字符串加法编写一个print语句&#xff0c;以便生成以下精确输出&#xff1a; 377B&#xff1a;牛肉汤&#xff0c;250mL 代码 product_code "377B"…

图像分类(二) 全面解读复现ZFNet

网络详解 前言&#xff1a;ZF网络是2013年提出的&#xff0c;网上有很多关于它的介绍和讲解&#xff0c;但是很多内容讲的不太好&#xff08;个人感觉&#xff09;&#xff0c;于是花时间收集了一些资料&#xff0c;整理了一些比较好的文章&#xff0c;从头到尾把ZFNet说了一遍…

【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

文章目录 一、概要二、效果演示三、代码讲解3.1 爬虫采集行政处罚数据3.2 存MySQL数据库3.3 发送告警邮件&微信通知3.4 定时机制 四、总结 一、概要 您好&#xff01;我是马哥python说&#xff0c;一名10年程序猿。 我原创开发了一套定时自动化爬取方案&#xff0c;完整开…

Echarts柱状图配置代码详解,含常用图例代码

一、初识柱状图 从echarts官网引入基础的柱状图后&#xff0c;可以看到他有如下的配置项。我们可以改变各个配置项的属性&#xff0c;将图例调整为我们期望的效果。 二、常用配置项 因为引入echarts图例后&#xff0c;改变图例的东西都在option配置项中&#xff0c;所以其他部…

【电路笔记】-最大功率传输

最大功率传输 文章目录 最大功率传输1、概述2、最大功率传输定理 (MPTT)3、示例4、阻抗匹配5、总结 当工程师设计电子电路时&#xff0c;他们会跟踪许多不同的参数&#xff0c;但最重要的参数之一是功率。 在现代电路中&#xff0c;功率在多个阶段中不断变化&#xff0c;有时由…