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的各种常用函数就介绍到这里,如有错误还请不吝赐教,谢谢大家

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值