C++string类讲解

大家好鸭

见字如面,已经有好久没有写文章了,这段时间忙着学习,也忙着玩,所以停更了一段时间

今天让我们来谈一谈关于C++中的string类

什么是string类?

在c语言中我们操作字符串往往采用指针,这样的访问方式并不安全,有可能会导致越界,使用起来并不方便,string类封装了字符串的操作

为什么我们需要string类?

c语言中的字符串操作不符合OOP思想,使用string类可以使各种库函数方便访问,string类的出现使字符串操作方便快捷

string类接口

string类构造函数

string的构造函数有7种,但常有的有4种

string();//默认初始化
	string(const char* s);//使用字符串初始化
	string(size_t n, char c);//使用n个字符c初始化
	string(const string & s);//使用另一个string类去初始化

string对象的容器操作

size函数和length函数一样都是返回string中的字符个数,不包括\0

string mystring;
mystring.size();

使用时在string变量后面跟上.siez()  调用函数

max_size函数返回string可以存放的最大字符个数,但没什么用,存放个数与存储空间有关,返回的值并不能表示最大存储个数

resize函数有两种使用方式

resize(size_t n)//将有效字符个数变为n个,如果n小于当前有效字符个数则在n+1位置放置一个\0
//若n大于当前有效字符个数则使用\0填充到n个有效字符
resize(size_t n,char c)//和上面一样,但填充时采用char c填充

capacity函数,查看当前可容纳的字符个数

reverse函数,开空间的函数,可以将空间开到n个,当知道string大概有几个字符时可以使用这个提前开好空间

clear函数,清除当前的所有字符串,但容量不变

empty函数,查看string是否为空,空返回true,非空返回false

string类的访问

本文介绍string类的各种常见的访问方式

string类中重载了operator[]

这string类可以直接像数组一样访问,括号中的数字为下标

    string add("abcdef");
	for (int i = 0; i < add.size(); i++)
	{
		cout << add[i] << endl;
	}

这是一种遍历数组的方式

另外stirng类还有对应的迭代器,可以通过迭代器遍历string类

string add("abcdef");
	auto it = add.begin();
	while (it != add.end())
	{
		cout << *it << endl;
		++it;
	}

这两者最后遍历的效果是一样的

为了方便头和尾的访问stirng引入了back和front

    string add("abcdef");
	add.back() = 'x';
	add.front() = 'x';
	cout << add << endl;

效果如下

back和front是直接指向最后一个字符和第一个字符

string类的修改操作

第一个push_back

用于在尾部再增加一个字符

第二个operator+=

用于在尾部增加字符串或单个字符

这个使用比push_back方便,可以代替使用

第三个append

这个用于在尾部增加字符串,也可以被+=代替

第四个assign

这个函数是对string类进行重新赋值,具体的接口有很多,

string& assign (InputIterator first, InputIterator last)

这个写题的时候用的多

第五个insert和erase

insert函数可以在指定位置插入字符串,字符,n个字符

也支持在迭代器位置插入n个字符,或一个字符,或一段迭代器区间

erase函数在指定位置删除长度为npos的字符串

也可以单独删除一个迭代器位置

或删除一段迭代器区间

其他string函数

c_str函数

返回c语言形式的字符串,用于和一些函数对接,因为存在一些函数检查的是c语言类型的字符串

find函数

在指定位置查找字符串或者字符

substr函数

在指定位置截取长度为n的字符串,并返回

getline函数

这个函数可以在输入的时候避免空格中断输入

string的各种常用函数就介绍到这里,如有错误还请不吝赐教,谢谢大家

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

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

相关文章

阿里巴巴面试必备:数据库集群知识全面解读!

大家好,我是小米。今天,我们将深入探讨阿里巴巴面试题中一个备受关注的话题:数据库集群。作为技术领域中的一项重要实践,数据库集群不仅是企业架构中的核心组成部分,更是保障系统稳定性和数据可靠性的关键一环。让我们一起来揭秘数据库集群的奥秘吧! 主从复制过程 主从…

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树&#xff08;中序遍历特性&#xff09;】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------&#x1f388;&#x1f38…

ssm701基于JavaWeb的个人健康信息管理系统

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

Excel常用公式总结非常实用

16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域&#xff09; 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…

JS reduce() 附使用详解

reduce() 方法对数组中的每个元素执行自己提供的回调函数(依次执行)&#xff0c;将其结果汇总为单个返回值。 文章目录 前言一、reduce()是什么&#xff1f;二、使用步骤1.语法2.实例解析 initialValue 参数3.注意事项4.应用情况 三、总结 前言 reduce()方法可以搞定的东西特别…

【leetcode】用队列实现栈

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 思路: 在做此题之前&#xff0c;我们先要实现队列&#xff0c;这在上个博客中已经写过&#…

【深度学习笔记】5_4 池化层

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 5.4 池化层 回忆一下&#xff0c;在5.1节&#xff08;二维卷积层&#xff09;里介绍的图像物体边缘检测应用中&#xff0c;我们构造卷…

pyhton3+selenium的web页面自动化测试框架!

web自动化测试框架 pyhton3selenium3unittestHTMLTestRunner 环境部署&#xff1a; python3SeleniumunittestHTMLTestRunnerpageObject Web自动化测试框架 &#xff08;Page Object设计模式&#xff09; 环境部署&#xff1a; python3、selenium3 开发工具&#xff1a; P…

小程序事件处理

事件处理 一个应用仅仅只有界面展示是不够的&#xff0c;还需要和用户做交互&#xff0c;例如&#xff1a;响应用户的点击、获取用户输入的值等等&#xff0c;在小程序里边&#xff0c;我们就通过编写 JS 脚本文件来处理用户的操作 1. 事件绑定和事件对象 小程序中绑定事件与…

基于springboot实现保险信息网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现保险信息网站系统演示 摘要 随着互联网的不断发展&#xff0c;现在人们获取最新资讯的主要途径来源于网上新闻&#xff0c;当下的网上信息宣传门户网站的发展十分的迅速。而保险产品&#xff0c;作为当下人们非常关注的一款能够给人们带来医疗、生活、养老或…

HTML5新特性:为Web带来的翻天覆地变化

随着互联网的发展&#xff0c;HTML5作为Web开发的重要里程碑&#xff0c;为我们带来了一系列令人兴奋的新特性和功能。本文将带领大家探索HTML5的新特性&#xff0c;揭示其对Web技术的巨大影响。 一、介绍 HTML5作为HTML的最新版本&#xff0c;不仅强化了网页结构与内容&#…

【JVM】JVM相关机制

1. JVM内存区域划分 1.1 内存区域划分简介 内存区域划分&#xff1a;实际上JVM也是一个进程&#xff0c;进程运行时需要向操作系统申请一些系统资源&#xff08;内存就是典型的资源&#xff09;&#xff0c;这些内存空间就支撑着后续Java程序的运行&#xff0c;而这些内存又会…

【go语言开发】swagger安装和使用

本文主要介绍go-swagger的安装和使用&#xff0c;首先介绍如何安装swagger&#xff0c;测试是否成功&#xff1b;然后列出常用的注释和给出使用例子&#xff1b;最后生成接口文档&#xff0c;并在浏览器上测试 文章目录 安装注释说明常用注释参考例子 文档生成格式化文档生成do…

T3SF:一款功能全面的桌面端技术练习模拟框架

关于T3SF T3SF是一款功能全面的桌面端技术练习模拟框架&#xff0c;该工具针对基于主场景事件列表的各种事件提供了模块化的架构&#xff0c;并包含了针对每一个练习定义的规则集&#xff0c;以及允许为对应平台参数定义参数的配置文件。 该工具的主模块能够执行与其他特定模…

Python学习 问题汇总(None)

None的总结 在Python中&#xff0c;对于一些变量往往需要赋初始值&#xff0c;为了防止初始值与正常值混淆&#xff0c;通常采用置0或置空操作&#xff0c;置0比较简单&#xff0c;置空则是赋NoneNone是一个空值&#xff0c;可以赋给任意类型的变量&#xff0c;起到占位的作用…

德人合科技 | —数据泄露可能会对公司造成哪些影响?

数据泄露可能会对公司造成多方面的影响&#xff0c;以下是一些可能的影响&#xff1a; 财务损失&#xff1a;数据泄露可能导致公司遭受财务损失。攻击者可能会盗取公司的敏感信息&#xff0c;如客户信息、银行账户信息、商业机密等&#xff0c;并利用这些信息进行欺诈、盗窃等非…

从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。

设节点定义如下struct Node {int Element; // 节点中的元素为整数类型struct Node * Next; // 指向下一个节点 }; 从键盘输入5个整数&#xff0c;将这些整数插入到一个链表中&#xff0c;并按从小到大次序排列&#xff0c;最后输出这些整数。注释那段求指出错误&#xff0c;求解…

微信自动回复,基于python

#!/usr/bin/python3 # -*- coding: utf-8 -*-import numpy as np import pandas as pd from uiautomation import WindowControl import csvwx WindowControl(Name微信,searchDepth1 ) # 切换窗口 wx.ListControl() wx.SwitchToThisWindow() # 寻找会话控件绑定 hw wx.…

【竞技宝jjb.lol】LOL:圣枪剑魔屡建奇功 JDG2-0轻松击败TT

北京时间2024年3月2日&#xff0c;英雄联盟LPL2024春季常规赛继续进行&#xff0c;昨日共进行三场比赛&#xff0c;第三场比赛由JDG对阵TT。本场比赛TT前期和JDG有来有回&#xff0c;但中期团战处理还是稍欠火候&#xff0c;最终JDG2-0轻松击败TT。以下是本场比赛的详细战报。 …

Shellcode ---> 脚本命令入门

今天来浅讲一下shellcode&#xff0c;开始之前&#xff0c;先来乐一乐&#xff0c;哈哈哈哈哈哈哈哈哈哈哈哈 以下的命令你们都别乱用 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01…