C++初阶篇----string类

news2024/11/26 16:51:39

目录

  • 引言
  • 标准库中的string类
  • string类的常用接口
    • string类对象的常见构造
    • string类对象的
    • string类对象的访问及遍历
    • string类对象的修改
    • string类非成员函数

引言

什么是string类?
string 类是 C++ 标准库中的一个类,用于处理字符串。它提供了一系列方法来创建、操作和处理字符串,同时也隐藏了底层的内存管理细节,使得字符串操作更加方便和安全。

标准库中的string类

string类的文档介绍
string 类的一些常见特性和功能:

  1. 动态内存管理: string 类能够根据需要动态分配内存来存储字符串,因此可以适应不同长度的字符串而不需要提前指定字符串的大小。

  2. 字符访问和修改: 可以通过索引或迭代器来访问和修改字符串中的字符,也支持类似数组的下标访问方式。

  3. 字符串操作: 提供了丰富的字符串操作方法,如连接(concatenate)、截取(substring)、查找(find)、替换(replace)等。

  4. 输入输出支持: 可以方便地通过输入输出流进行字符串的读写操作,与其他标准输入输出类型兼容。与 C 字符串的转换: 支持与 C 风格字符串(以 null 结尾的字符数组)之间的转换,可以通过 c_str() 方法获取 C 字符串表示。

  5. 容器特性: string 类是标准库中的容器之一,因此支持类似于向量(vector)等容器的一些操作,如迭代器遍历、大小查询等。(但历史算是比较悠久,相较于其他的容器要早)

string类的常用接口

string类对象的常见构造

(constructor) 函数名称功能说明
string构造空的string类对象
string(const char s)*用C-string来构造string类对象
string(size_t n,char c)string类对象中包含n个字符c
string(const string& s)拷贝构造函数
void test1()
{
	string s();
	string s2("little zhu");
	string s3(s2);
}

在这里插入图片描述

string类对象的

函数名称功能说明
size返回字符串有效字符长度
length返回字符串长度
capacity返回空间大小
empty检测字符串释放为空串,是return true ,不是反之
clear清空有效字符
reserve为字符串预留空间
resize将有效字符的个数改成 n 个(n为此函数的参数) ,多出的空间用字符c填充

注意:

  1. size()与length()方法底层实现是一样的
  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类对象的访问及遍历

函数名称功能说明
operator[]返回pos位置的字符,const string类对象调用
begin + endbegin 获取一个字符的迭代器+end 获取最后一个字符下一个位置的迭代器
rbegin + rendbegin获取一个字符的迭代器+ end获取最后一个字符下一个位置的迭代器
void test1()
{
	string s();
	string s2("little zhu");
	string s3(s2);

	string::iterator it = s2.begin();
	while (it != s2.end())
	{
		cout << *it ;
		it++; 
	}
	cout << endl;
	auto rit = s3.rbegin();
	for (auto ch : s3)
	{
		cout << ch << endl;
	}
}

int main()
{
	test1();
	return 0;
}

在这里插入图片描述

string类对象的修改

函数名称功能说明
push_back在字符串后尾插字符c
operator+=在字符串后面追加字符串str
append在字符串后追加一个字符串
c_str返回C格式字符串
find + npos从字符串pos位置开始往后找字符C,返回该字符中的位置
rfind
rfind从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置
substr在str中从pos位置开始,截取n个字符,然后将其返回

void test1()
{
	string s();
	string s2("little zhu");
	string s3(s2);
	s2.push_back(' ');
	s2.append("miss");
	s2 += 've';
	s2 += 'ry';
	cout << s2 << endl;
	cout << s2.c_str() << endl;
}

在这里插入图片描述

string类非成员函数

函数功能说明
operator+由于传值返回,导致深拷贝效率低,不推荐使用
operator>>输入流运算符重载
operator<<输出流运算符重载
getline获取一行字符串
relational operators大小比较
void test2()
{
	string s4;
	cin >> s4;
	cout << s4 << endl;
	string s1 = "who ";
	string s2 = "are ";
	string s3 = s1 + s2;
	cout << s3 << endl;
	string s5;
	getline(cin, s5);
	cout << s5 << endl;
}

int main()
{
	test2();
	return 0;
}

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

北斗激光平地机提高农机耕种效率

北斗激光平地机提高农机耕种效率 湖北省浠水县地处大别山南麓&#xff0c;六成左右的田块都分布在丘陵地带&#xff0c;田块小、高低落差大&#xff0c;给机械化作业带来诸多不便。在今年的春耕中&#xff0c;配备北斗智能检测终端的激光平地机很受当地种粮大户追捧。 稻田平整…

超声波清洗机选购指南:眼镜清洗器哪个好?4款眼镜清洗利器推荐

随着科技的发展&#xff0c;现在就是连洗眼镜都有专门的辅助工具了&#xff0c;没错&#xff0c;就是超声波眼镜清洗机&#xff01;这种超声波清洗机之所以能够做到清洁眼镜&#xff0c;是因为它利用了超声波振动原理&#xff0c;通过水分子爆破瞬间的冲击力对眼镜上面的污垢进…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项样卷

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜…

Java八股文(设计模式)

Java八股文の设计模式 设计模式 设计模式 什么是设计模式&#xff1f;请列举一些常见的设计模式。 设计模式是软件设计中常用的一种思维模式&#xff0c;它描述了一类具有相似特征和解决思路的问题。 常见的设计模式包括单例模式、工厂模式、观察者模式、装饰器模式等。 请解释…

简单的LAMP部署

目录 一、准备环境 二、安装apache组件 三、安装mysql组件 四、安装php组件 五、浏览器访问 一、准备环境 iptables -F #清空防火墙规则 systemctl stop firewalld #关闭防火墙 setenforce 0 …

IP/TCP--解决为什么电脑连上了有线网就不能再连WIFI【转载】

文章目录 第一种情况&#xff1a;WIFI与有线网在同一网段下1、查看路由信息2、调整跃点数 第二种情况&#xff1a;WIFI与有线网不在同一网段下跃点数概念路由器设置入口 【注意适用情型&#xff1a;需要同时用到内网&#xff08;不能上公网的内部网络&#xff09;和互联网。】 …

PyQt5——QFileDialog 打开文件对话框

概述 打开文件对话框是为了让用户可以自己选择要打开的文件&#xff0c;在 PyQt5 里要打开文件对话框可以使用 QFileDialog。 无父类窗口 Python PyQt5 打开文件对话框要使用 QFileDialog.getOpenFileName()&#xff0c;如果没有父类 Widget 的话&#xff0c;QFileDialog.ge…

Webpack常见插件和模式

目录 目录 目录认识 PluginCleanWebpackPluginHtmlWebpackPlugin自定义模版 DefinePlugin的介绍 ( 持续更新 )Mode 配置 认识 Plugin Loader是用于特定的模块类型进行转换&#xff1b; Plugin可以用于执行更加广泛的任务&#xff0c;比如打包优化、资源管理、环境变量注入等 …

linux离线安装maven

一、下载maven 地址&#xff1a;Maven – Download Apache Maven 使用root权限用户登录服务器 cd /opt sudo mkdir maven cd maven 二、上传maven 使用Xftp工具 三、解压并配置环境变量 tar -zxvf tar -zxvf apache-maven-3.9.6-bin.tar.gz cd apache-maven-3.9.6/ 看到解压…

三极管工作方式

如下图&#xff1a; 谨记&#xff1a; NPN 型&#xff1a; B 0 截止 B 1 导通 PNP 型&#xff1a; B 0 导通 B 1 截止 来源&#xff1a;% - 闲鹤

面对1.2亿月活的UGC平台,游戏开发者有哪些机会? | TOPON变现干货

4月21日&#xff0c;TopOn、七麦数据、罗斯基共同主办的《游戏赛道新机会》主题沙龙在深圳举办。活动邀请到了国内多家知名厂商和平台的负责人&#xff0c;大家从个人业务的角度出发&#xff0c;为从业者分享最新的行业趋势和方法论。 在活动上&#xff0c;迷你玩内容生态运营…

OSPF GTSM(通用TTL安全保护机制)

目录 GTSM的定义 使用GTSM的目的 GTSM的原理 配置OSPF GTSM实例 组网需求 配置思路 操作步骤 1. 配置各接口的IP地址 2.配置OSPF基本功能 3.配置OSPF GTSM 4. 验证配置结果 GTSM的定义 GTSM&#xff08;Generalized TTL Security Mechanism&#xff09;&#xff0c;…

订单系统-RPC快速入门

RPC快速入门 概述 关于rpc&#xff0c;只需要知道他是一种协议&#xff0c;项目之间能够远程调用函数。 快速入门 我们前边下载好的两个包&#xff0c;在idea中打开之后&#xff0c;我们创建这么几个文件夹。 至于是干什么的&#xff0c;以后细说。创建好之后我们在produc…

halcon例程学习——ball.hdev

dev_update_window (off) dev_close_window () dev_open_window (0, 0, 728, 512, black, WindowID) read_image (Bond, die/die_03) dev_display (Bond) set_display_font (WindowID, 14, mono, true, false) *自带的 提示继续 disp_continue_message (WindowID, black, true)…

uniapp开发App——登陆流程 判断是否登陆,是,进入首页,否,跳转到登录页

一、登陆流程 文字描述&#xff1a;用户进入App&#xff0c;之后就是判断该App是否有用户登陆过&#xff0c;如果有&#xff0c;直接进入首页&#xff0c;否则跳转到登陆页&#xff0c;登陆成功后&#xff0c;进入首页。 流程图如下&#xff1a; 二、在uniapp项目中代码实现 实…

用html实现一个日历便签设计

<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>日历便签设计</title><link hrefhttps://fonts.googleapis.com/css?familyMontserrat:700,400 relstylesheet typetext/css><link hr…

【C++程序员的自我修炼】基础语法篇(一)

心中若有桃花源 何处不是水云间 目录 命名空间 &#x1f49e;命名空间的定义 &#x1f49e; 命名空间的使用 输入输出流 缺省参数 函数的引用 引用的定义&#x1f49e; 引用的表示&#x1f49e; 引用的特性&#x1f49e; 常量引用&#x1f49e; 引用的使用场景 做参数 做返回值…

千川素材投放效果追踪与精准识别:从数据洞察到策略优化的全面跃升

一、数据驱动的投放效果追踪在数字化营销时代&#xff0c;数据的力量不可忽视。对于广告主而言&#xff0c;投放效果追踪不仅是对广告效果的简单度量&#xff0c;更是对市场反应、用户行为和广告策略的深入分析。通过数据驱动的投放效果追踪&#xff0c;广告主可以更加精准地了…

睿考网:税务师考试科目难吗?

税务师资格考试共包含五门课程&#xff0c;即《税法一》、《税法二》、《涉税服务实务》、《涉税服务相关法律》以及《财务与会计》。 每一门科目的满分为140分&#xff0c;其中及格线为84分&#xff0c;全科的成绩有效期为五年&#xff0c;考生在连续五个考试年度内通过全部应…

【python】爬取4K壁纸保存到本地文件夹【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 图片信息丰富多彩&#xff0c;许多网站上都有大量精美的图片资源。有时候我们可能需要批量下载这些图片&#xff0c;而手动一个个下载显然效率太低。因此&#xff0c;编写一个简单的网站图片爬取程序可以帮助我们…