【C++】string类部分方法的使用介绍

简介

关于string类的性质,这里简单介绍几点:

  1. string是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator>
    string;
  4. 不能操作多字节或者变长字符的序列。
  5. 在使用string类时,必须包含#include头文件以及using namespace std;

话不多说,我们下面介绍部分string类中常用或者比较重压迫的几种方法:

string类的构造函数(含拷贝构造)

一个类的构造函数决定了我们如何来对对象如何进行初始化。
在string类中编写者给了我们大概七种构造函数,这里我们主要讲常用的三种:

string()

首先是无参(全缺省)的构造函数,也就是默认构造函数,这个构造函数会生成一个空的string类对象,也就是空字符串。

string(const char* str)

其次是传入一个类型为const char*(C-string)的字符串作为初始化内容对对象进行初始化。

string(const string& str)

最后是传入一个string引用类型的字符串,也就是所谓的拷贝构造来对对象进行初始化。

容量相关

size(void)方法

返回字符串当前有效内容大小,不包含’\0’。

empty(void)方法

判断当前字符串是否为空,若为空,返回true。

clear(void)方法

清空当前字符串中的有效内容。

reserve(size_t space)方法

调用此方法可以为字符串预留空间,这个方法改变的是字符串的capacity,一般来讲传入参数如果比当前capacity小也不会给string缩容。

resize(size_t n, char c = ‘\0’)方法

将有效字符的个数置成n个,如果n小于当前size则去掉n及其以后的内容,如果n大于当前size,则将多出的空间用字符c填充。

访问/遍历相关

operator [] (size_t n)方法

为了能够像访问C串一样便捷的访问string对象,我们对于方括号进行了重载,能够直接通过在方括号中添加位置来访问字符串的对应位置,而且这个方法的非const重载返回值为引用返回,所以也可以直接通过其返回值修改string对象内容。

begin() 和 end() 方法

这两个方法会返回对应类对应位置的迭代器,begin()会返回指向类对象中第一个元素的迭代器,end()会返回指向类对象中最后一个元素后面一个位置的迭代器。这两个迭代器的实现也为范围for的实现提供了保障。

修改相关

push_back(char ch) 和 append(const char* str)方法

这两个方法都是在当前字符串对象结尾进行插入,第一种为插入一个字符,第二种为插入一个字符串。

operator+=(char ch)/ operator+=(const char* str)方法

+=运算符重载,让字符串尾部添加内容的过程更加的形象化,我们这里既可以直接加等一个字符,也可以加等一个字符串。一般能够使用这个运算符重载,我们就不再会选择前两种方法来字符串后添加内容了。

c_str()方法

此方法可以使当前string类型对象转换为const char*类型对象,也就是转换为C串,主要作用是方便调用一些C的接口。

find() + npos

find方法顾名思义,肯定是在字符串中进行查找,这里既可以查找某个字符,也可以查找一个字符串,而npos是string类中的一个静态成员变量,其大小为11111111111111111111111111111111(2),一般用来作为缺省参数,使类方法进行至对象的最尾端。

substr(size_t pos = 0, size_t len = npos) const方法

此方法的作用为在str中从pos位置开始,截取n个字符,然后将其返回,如果第二个参数为缺省传入,那么就将pos及其后面的所有内容回传。

string类非成员函数

非成员函数就说明函数并非在类内定义,但可以为类所调用,比如流插入、流提取等均为非成员函数。这类函数的一个重要特点就是,他们的第一个参数在很多情况下不能是类对象,而在类内定义的函数自带一个默认参数,也就是类对象本身,正因如此他们从类中被拿出来单独定义。

operator+()方法

+是典型的非成员函数,因为加法交换律的存在,加号左值很多时候可能就是不是类对象,可能是其它字符串,所以我们将它作为非成员函数来定义。

operator>>()方法和operator<<()方法

流插入和流提取是C++为了适应面向对象编程而编写的输入输出类,它们的一个重要特点就是一般要写在要输出或输入内容的左侧,而如果在类内重载,我们就没法让他作为<<符号左侧的参数进行出现(这个位置固定交给类对象),因此要放在类外定义。

getline()方法

这个方法就像C中的gets,因为无论cin还是scanf,遇到空格就会自动停止读取,而getline能够避免这个问题。而且getline函数的第一个参数也是输入流类型的参数,所以也不能写在类内,和上面几个同理。

结束语

以上就是关于string类部分方法的使用介绍,如有不足或遗漏之处还请大家指正,笔者感激不尽;同时也欢迎大家在评论区进行讨论,一起学习,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值