当前位置: 首页 > news >正文

C++初阶学习第六弹------标准库中的string类

目录

一.标准库中的string类

二.string的常用接口函数

2.1string类对象的构造

 2.2 string的容量操作

 2.3 string类的访问与遍历

 2.4 string类对象的修改

2.5 string类常用的非成员函数

 三、总结


一.标准库中的string类

可以简单理解成把string类理解为变长的字符数组,我们可以对它进行增删查改等一系列操作,同时有一些列封装的接口函数提供给我们可以让我们直接使用。

二.string的常用接口函数

2.1string类对象的构造

string s2("hello bit"); // 用C格式字符串构造string类对象s2cout << s2 << endl;cout << endl;string s3(s2); // 拷贝构造s3string s3(s2); // 拷贝构造s3cout << s3 << endl;

 我们普便使用以上的两种方法来构造string。

 2.2 string的容量操作

int main()
{string s1("abcdef");cout << "s1:" << s1 << endl;cout << "size:" << s1.size() << endl;        //有效字符的个数cout << "length:" << s1.length() << endl;    //有效字符的个数//上面这两个功能上差别不大,一般我们用size()用的多一点cout << "capacity:" << s1.capacity() << endl;//开辟的空间大小(当空间不够时会自动扩容,扩容空间为原空间的1.5倍(与环境有关))cout << "empty:" << s1.empty() << endl;     //检查字符串是否为空,0表示非空,1表示空s1.clear();                                 //清空字符串cout << "s1:" << s1 << endl;s1.reserve(50);                            //开辟指定大小空间(一般会多一点)cout << "capacity:" << s1.capacity() << endl;s1.resize(5, 'a');cout << "size:" << s1.size() << endl;cout << "s1:" << s1 << endl;return 0;
}

 

 2.3 string类的访问与遍历

int main()
{string s1("abcdef");//访问方法:下标访问法cout << s1[1] << endl;cout << s1[2] << endl;s1[0] = 'h';cout << "下标遍历法:";for (int i = 0; i < s1.size(); i++){cout << s1[i] << " ";}cout << endl;cout << "迭代器法(正向):";string::iterator it = s1.begin();for (; it != s1.end(); it++){cout << *it << " ";}cout << endl;cout << "迭代器(反向):";string::reverse_iterator rit = s1.rbegin();while (rit != s1.rend()){cout << *rit << " ";rit++;}cout << endl;cout << "范围for法:";for (auto e : s1){cout << e << " ";}cout << endl;return 0;}

 

 2.4 string类对象的修改

int main()
{string s1("sssssssss");cout << s1 << endl;//push_back  在末尾加入字符cout << "push_back后:";s1.push_back('w');cout << s1 << endl;//append     在末端加入字符串cout << "append后:" ;s1.append(" www");cout << s1 << endl;//operator+= 在末端随意添加cout << "+=后:";s1 += " yy";cout << s1 << endl;//c_str    返回C格式字符串cout << "c_str:";const char* m = s1.c_str();cout << m << endl;//find  从pos位置开始查找字符并返回其位置cout << "find:";int npos1 = s1.find('y');cout << npos1 << endl;//rfind  从pos位置开始往前查找字符并返回其位置cout << "rfind:";int npos2 = s1.rfind('y');cout << npos2 << endl;//substr  从pos位置开始截取n个字符并返回cout << "substr后:";string tmp = s1.substr(npos1, npos2 - npos1);cout << tmp << endl;return 0;
}

 

2.5 string类常用的非成员函数

int main()
{string s1("hello ");string s2("bit");//operator+    涉及深层拷贝,不建议多用cout << "operator+后:";cout << operator+(s1, s2) << endl;//operator>>   输入运算符重载cout << "operator>>:";string s3;operator>>(cin,s3);cout << s3 << endl;//operator<<    输出运算符重载cout << "operator<<:";operator<<(cout, s1) << endl;return 0;
}

 

 三、总结

以上就是常见的string封装的接口函数,下期将讲解关于如何实现这些函数。

请大佬们一键三连~

相关文章:

C++初阶学习第六弹------标准库中的string类

目录 一.标准库中的string类 二.string的常用接口函数 2.1string类对象的构造 2.2 string的容量操作 2.3 string类的访问与遍历 2.4 string类对象的修改 2.5 string类常用的非成员函数 三、总结 一.标准库中的string类 可以简单理解成把string类理解为变长的字符数组&#x…...

Linux基础-Makefile的编写、以及编写第一个Linux程序:进度条(模拟在 方便下载的同时,更新图形化界面)

目录 一、Linux项目自动化构建工具-make/Makefile ​编辑 背景&#xff1a; makefile小技巧&#xff1a; 二、Linux第一个小程序&#xff0d;进度条 先导&#xff1a; 1.如何利用/r,fflush(stdout)来实现我们想要的效果&#xff1b; 2.写一个倒计时&#xff1a; 进度条…...

华为云DevSecOps和DevOps

目录 1.华为云DevSecOps和DevOps 1.1 DevSecOps 1.1.1 核心功能 1.1.2 优势 1.2 DevOps 1.2.1 核心功能 1.2.2 优势 1.3 DevOps和DevSecOps的区别 1.3.1 安全性集成 1.3.2 自动化的安全工具 1.3.3 团队协作 1.3.4 质量与合规性 1.3.5 成本与风险管理 1.3.5 总结 …...

RESTful API设计中的GET与POST:何时及为何成为首选?

RESTful API设计中的GET与POST&#xff1a;何时及为何成为首选&#xff1f; 在RESTful API的设计过程中&#xff0c;HTTP方法&#xff08;GET、POST、PUT、DELETE等&#xff09;作为资源的操作标识&#xff0c;扮演着至关重要的角色。然而&#xff0c;在实际开发中&#xff0c…...

秋招自我介绍

1min 尊敬的面试官您好&#xff0c;感谢您百忙之中参加我的面试。我是来自北京大学的王峰。 在实习经历方面&#xff0c;我曾在美团和小米公司实习。在美团主要负责核身、质检、词云项目。 在核身项目中&#xff0c;完整的经历从0-1的项目上线过程 在质检项目中&#xff0c;进…...

html加载页面

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>算数模一体化</title> </head><b…...

【数据可视化】Arcgis api4.x 热力图、时间动态热力图、timeSlider时间滑块控件应用 (超详细、附免费教学数据、收藏!)

1.效果 目录 1.效果 2.安装配置 3.热力图 4.TimeSlider滑块应用 4.1 时间滑块控件 4.2 添加控件 5.时间动态热力图 2.安装配置 这里不教大家如何在前端框架使用arcgis api。不过npm安装、css如何引入、教学数据存放与图层加载的教程&#xff0c;可以浏览我之前发的一篇文…...

WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制

知识点&#xff1a; 1、JavaWeb常见安全及代码逻辑&#xff1b; 2、目录遍历&身份验证&逻辑&JWT&#xff1b; 3、访问控制&安全组件&越权&三方组件&#xff1b; 演示案例&#xff1a; JavaWeb-WebGoat8靶场搭建使用 安全问题-目录遍历&身份认…...

【C++算法】模拟算法

替换所有的问号 题目链接 替换所有的问号https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/ 算法原理 代码步骤 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){…...

模版进阶(template)

1.非类型模版参数 模版参数分类类型形参与非类型形参。 ① 类型形参&#xff1a;出现在在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 ② 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当…...

vue2与vue3的区别

1.v-if与v-for的优先级不同 2.vue2中存在数据更新以后视频不更新的问题&#xff0c;故存在$set来解决这一问题&#xff0c;而vue3中数据双向绑定不存在数据更新视图不更新的问题&#xff0c;所以也就没有this.$set...

借助大模型将文档转换为视频

利用传统手段将文档内容转换为视频&#xff0c;比如根据文档内容录制一个视频&#xff0c;不仅需要投入大量的时间和精力&#xff0c;而且往往需要具备专业的视频编辑技能。使用大模型技术可以更加有效且智能化地解决上述问题。本实践方案旨在依托大语言模型&#xff08;Large …...

UE5安卓项目打包安装

Android studio安装 参考&#xff1a;https://docs.unrealengine.com/5.2/zh-CN/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment/ 打开android studio的官网&#xff1a;Download Android Studio & App Tools - Android Developers …...

MSF的使用学习

一、更新MSF apt update # 更新安装包信息&#xff1b;只检查&#xff0c;不更新&#xff08;已安装的软件包是否有可用的更新&#xff0c;给出汇总报告&#xff09; apt upgrade # 更新已安装的软件包&#xff0c;不删除旧包&#xff1b; apt full-upgrade # 升级包&#x…...

C++ —— 关于vector

目录 链接 1. vector的定义 2. vector的构造 3. vector 的遍历 4. vector 的扩容机制 5. vector 的空间接口 5.1 resize 接口 5.2 push_back 5.3 insert 5.4 erase 5.5 流插入与流提取 vector 并不支持流插入与流提取&#xff0c;但是可以自己设计&#xff0c;更…...

设计模式——对象池模式

对象池模式 1. 概述2. 适用场景3. 原理4. 优点5. 缺点 示例代码示例代码使用示例 Java 标准库中的例子Apache Commons Pool 示例 1. 概述 对象池模式&#xff08;Object Pool Pattern&#xff09; 是一种用于管理和复用一组预先创建的对象的设计模式。它的主要目的是为了提高性…...

【VitualBox】VitualBox的网络模式+网络配置

VirtualBox 1. 简介 VirtualBox 是一款开源虚拟机软件&#xff0c;使用者可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。 2. 六种网络接入模式 VirtualBox提供了多种网络接入模式&#xff0c;他们各有优缺点&#xf…...

「Netmarble 小镇」活动来了:踏上穿越标志性世界的旅程!

欢迎来到 Netmarble 小镇&#xff01;本次活动从 9 月 13 日持续到 10 月 11 日&#xff0c;是你们体验 Netmarble 著名游戏世界最精彩内容的入口。在为期一个月的庆祝活动中&#xff0c;你们将体验到独家内容、惊险刺激的挑战和全新人物化身的发布&#xff01; 探索 Netmarble…...

MySQL 中的索引覆盖扫描:加速查询的秘密武器

在 MySQL 数据库的使用中&#xff0c;索引是提高查询性能的重要工具。而索引覆盖扫描&#xff08;Index Covering Scan&#xff09;更是一种能显著提升查询效率的技术。本篇文章我们就来深入了解一下 MySQL 中的索引覆盖扫描是什么。 一、什么是索引覆盖扫描 在 MySQL 中&…...

【机器学习】经典数据集鸢尾花的分类识别

【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...

基于小程序老人监护管理系统源码数据库文档

摘 要 近年来&#xff0c;随着我国人口老龄化问题日益严重&#xff0c;独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长&#xff0c;随之而来的是日益突出的老年人问题&#xff0c;尤其是老年人的健康问题&#xff0c;尤其是老年人产生健康问题后&…...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具&#xff0c;支持将多个Markdown文件一键转换为Word文档。完全免费&#xff0c;无需安装&#xff0c;解压即用&#xff01; 官方网站 访问官方展示页面了解更多信息&#xff1a;http://mutou888.com/pro…...

从数据报表到决策大脑:AI重构电商决策链条

在传统电商运营中&#xff0c;决策链条往往止步于“数据报表层”&#xff1a;BI工具整合历史数据&#xff0c;生成滞后一周甚至更久的销售分析&#xff0c;运营团队凭经验预判需求。当爆款突然断货、促销库存积压时&#xff0c;企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…...