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类对象s2
	cout << s2 << endl;

	cout << endl;

	string s3(s2); // 拷贝构造s3string s3(s2); // 拷贝构造s3
	cout << 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封装的接口函数,下期将讲解关于如何实现这些函数。

请大佬们一键三连~

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

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

相关文章

c++234继承

#include<iostream> using namespace std;//public 修饰的成员便俩个和方法都能使用 //protected&#xff1a;类的内部 在继承的子类中可使用 class Parents { public:int a;//名字 protected:int b;//密码 private:int c;//情人public:void printT(){cout << &quo…

C:字符串函数(完)-学习笔记

目录 前言&#xff1a; 1、strstr 1.1 strstr的使用 4.2 strstr的模拟实现 5、strtok 5.1 strtok函数的介绍 5.2 strtok函数的使用 6、strerror 前言&#xff1a; 这篇文章将介绍strstr函数&#xff0c;strtok函数&#xff0c;strerror函数 1、strstr 1.1 strstr的使用…

RabbitMQ 高级特性——持久化

文章目录 前言持久化交换机持久化队列持久化消息持久化 前言 前面我们学习了 RabbitMQ 的高级特性——消息确认&#xff0c;消息确认可以保证消息传输过程的稳定性&#xff0c;但是在保证了消息传输过程的稳定性之后&#xff0c;还存在着其他的问题&#xff0c;我们都知道消息…

Linux内核结构

Linux内核结构 文章目录 Linux内核结构一、Linux内核结构介绍1.1 总体结构&#xff1a;1.2 Linux内核结构框图&#xff1a; 二、图解Linux系统架构三、shell3.1 shell的含义&#xff1a;3.2 shell的作用&#xff1a;3.3 shell的类型&#xff1a;3.4 shell的使用&#xff1a;3.5…

安泰电压放大器设计方法是什么样的

电压放大器是电子领域中常用的设备&#xff0c;用于将低电压信号放大成高电压信号。电压放大器在信号处理、通信系统、仪器测量、控制系统、医疗设备和研究和实验室等领域都有着广泛的应用。 电压放大器的设计方法主要包括选择合适的放大器拓扑结构、选择适当的放大器参数以及进…

72v-80V降5V1.5A恒压降压WT6035

72v-80V降5V1.5A恒压降压WT6035 WT6035 是一款高压降压开关稳压器&#xff0c;可用于将 72V - 80V 的电压降为 5V、1.5A 的恒压输出&#xff0c;以下是一些关于它的特点及应用注意事项&#xff1a; 芯片特点&#xff1a; 宽电压输入范围&#xff1a;输入电压范围为 5V 至 100V…

设计模式之命令模式:从原理到实战,深入解析及源码应用

&#x1f3af; 设计模式专栏&#xff0c;持续更新中 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 命令模式 什么是命令模式&#xff1f; 命令模式&#xff08;Command Pattern…

sensitive-word 敏感词 v0.20.0 数字全部匹配,而不是部分匹配

敏感词系列 sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word-admin v1.3.0 发布 如何支持分布式部署&#xff1f; 01-开源敏感词工具入门使用 02-如何实现一个敏感词工具&#xff1f;违禁词实现思路梳理 03-敏感词之 StopWord 停止词优化与特殊符号 04-…

《微信小程序实战(3) · 推广海报制作》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

VISIA 皮肤检测

费用:自费158元 不能医保报销 先清洁肌肤,然后做一个皮肤检测. 1200万像素高清摄像头,一个白光,一个偏正光,还有一个紫外光,三种模式,分析面部情况. 8张图 反应皮肤情况应用: 在医美前和医美一次修复完成后,皮肤情况对比. 数值越高 越好 斑点图: 皱纹图: 分数比较低的话,皮肤…

SpringBoot教程(三十) | SpringBoot集成Shiro(权限框架)

SpringBoot教程&#xff08;三十&#xff09; | SpringBoot集成Shiro&#xff08;权限框架&#xff09; 一、 什么是Shiro二、Shiro 组件核心组件其他组件 三、流程说明shiro的运行流程 四、SpringBoot 集成 Shiro1. 添加 Shiro 相关 maven2. 添加 其他 maven3. 设计数据库表4.…

268页PPT大型集团智慧工厂信息化顶层架构设计(2024版)

智能制造装备是高端制造业的关键&#xff0c;通过整合智能传感、控制、AI等技术&#xff0c;具备了信息感知、分析规划等智能化功能&#xff0c;能显著提升加工质量、效率和降低成本。该装备是先进制造、信息、智能技术的深度融合。其原理主要包括物联网集成、大数据分析与人工…

【数据结构与算法 | 灵神题单 | 合并链表篇】力扣2, 21, 445, 2816

1. 力扣2&#xff1a;两数相加 1.1 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可…

黑神话悟空mac可以玩吗

黑神话悟空mac上能不能玩对于苹果玩家来说很重要&#xff0c;那么黑神话悟空mac可以玩吗&#xff1f;目前是玩不了了&#xff0c;没有针对ios系统的版本&#xff0c;只能之后在云平台上找找了&#xff0c;大家可以再观望下看看。 黑神话悟空mac可以玩吗 ‌使用CrossOver‌&…

JavaEE初阶——初识EE(Java诞生背景,CPU详解)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能帮到你&#xff01; 目录 零&#xff1a;Java的发展背景介绍 一&#xff1a;EE的概念 二&#xff1a;计算机的构成 1&#xff1a;CU…

TCP 拥塞控制:一场网络数据的交通故事

从前有条“高速公路”&#xff0c;我们叫它互联网&#xff0c;而这条公路上的车辆&#xff0c;则是数据包。你可以把 TCP&#xff08;传输控制协议&#xff09;想象成一位交通警察&#xff0c;负责管理这些车辆的行驶速度&#xff0c;以防止交通堵塞——也就是网络拥塞。 第一…

你知道企业架构中核心的4大架构联系和不同吗?

引言&#xff1a;企业架构是指对企业信息管理系统中具有体系的、普遍性的问题而提供的通用解决方案它是基于业务导向和驱动的架构来理解、分析、设计、构建、集成、扩展、运行和管理信息统的。复杂系统是基于架构(或体系)的集成&#xff0c;而不是基于部件(或组件)的集成。指导…

【ARM】中断的处理

ARM的异常向量表 如果发生异常后并没有exception level切换&#xff0c;并且发生异常之 前使用的栈指针是SP_EL0&#xff0c;那么使用第一组异常向量表。如果发生异常后并没有exception level切换&#xff0c;并且发生异常之 前使用的栈指针是SP_EL1/2/3&#xff0c;那么使用第…

支付宝开发者✖️「蚂小财」——AgentUniverse专业多智能体框架在严谨产业中的应用实践

正在直播&#xff1a;点击进入直播间互动拿蚂蚁保温杯 &#xfeff;直播&#xfeff; &#xfeff;

英飞凌最新AURIX™TC4x芯片介绍

概述: 英飞凌推出最新的AURIX™TC4x系列,突破了电动汽车、ADAS、汽车e/e架构和边缘应用人工智能(AI)的界限。这一代面向未来的微控制器将有助于克服安全可靠的处理性能和效率方面的限制。客户将可缩短快速上市时间并降低整体系统成本。为何它被称为汽车市场新出现的主要颠覆…