C++string类的介绍及常用函数用法总结

发布时间:2024年01月06日

?

?

🎉个人名片:

🐼作者简介:一名乐于分享在学习道路上收获的大二在校生
🐻??个人主页🎉:GOTXX
🐼个人WeChat:ILXOXVJE

🐼本文由GOTXX原创,首发CSDN🎉🎉🎉
🕊系列专栏:零基础学习C语言----- 数据结构的学习之路
🐓每日一句:如果没有特别幸运,那就请特别努力!🎉🎉🎉
————————————————

?

🎉文章简介:

🎉本篇文章对? ?C++string类的介绍及常用函数用法总结?学习的相关知识进行分享!🎉

如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作动力的源泉,让我们一起加油,一起奔跑,让我们顶峰相见!!!🎉🎉🎉

目录

一.strng类的介绍

二.string类常用函数及用法

1.string类对象常见的构造

2.string类对象的容量操作

3. string类对象的访问及遍历操作 ?

4.string类对象的修改操作


?

一.strng类的介绍

?

简单的说:

string是表示字符串的字符串类,类里面提供了许多对字符串操作的函数;

string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits,
allocator> string;

?

其中, 注意: 在使用string类时,必须包含#include头文件以及using namespace std;

二.string类常用函数及用法

1.string类对象常见的构造

(1)? string()

功能:构造一个长度(大小)为0的空字符串;

【例子】

(2)string(const char* s)

功能:构造一个用字符串s初始化的字符串

【例子】

(3)string(const string& str)

功能:用字符串str拷贝构造一个字符串

【例子】

(4)string(size_t? n,char c)

功能:构造一个用n个字符c初始化的字符串

【例子】

2.string类对象的容量操作

(1)size?( )

功能:返回字符串有效字符长度

【例子】

(2)length( )

功能:和size一样,返回字符串有效字符的长度

【例子】

(3)capicity( )

功能:返回字符串总空间的大小? ? ? ? 注意:编译器不同得出得值不同;

【例子】

(4)empty( )

功能:检测字符串是否为空

【例子】

?

(5)clear( )

功能:清空字符串中得有效字符清空,但不会影响

注意:clear只是将有效字符清空,但不会影响底层总空间的大小

【例子】

(6)reserve? (size_t n)

功能:为string预留空间,不改变有效元素个数(如下例一),当reserve的参数小于string的底层空间总大小时,reserver不会改变容量大小(如下例二),只影响容量,不影响数据 ;? ? ?

注意:当使用reverse要扩容到某个值时,实际中编译器不一定会扩容到指定值,可能会多扩容点,不同的编译器结果不同;

【例一】

【例二】

(7)? ? void resize (size_t n)

? ? ? ? ? ? ?void resize (size_t n, char c)

功能:将字符串有效长度改为N个,不同的是当字符个数增多时:resize(n)?用? /0 来填充多出的元素空间(如下例一),resize(size_t n, char c)用字符?c?来填充多出的元素空间(如下例二);

注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变;

【例一】

【例二】

3. string类对象的访问及遍历操作 ?

下标遍历

(1)operator[]?

? ? ? ? ? char& operator[] (size_t pos);? ? ? ? ? ? ? ? ? ?//可读可改? ? ? ? ? 例一

const char& operator[] (size_t pos) const;? ? ? ? ? //只读不能改? ? ? ?例二

功能:类似于数组下标访问

其中:下标+[ ]只适用于部分容器,底层物理空间具有一定连续性的链式结构;

例一:

【例二】

?迭代器遍历? ? ? ?正向迭代器(iterator)

(2)begin()? ? 返回指向第一个字符的迭代器?

      iterator begin();             //可读可写
const_iterator begin() const;       //只读不能写    【如例二】

? ? ? ? ?end()? ? ? ?返回指向最后一个字符下一个字符的迭代器

      iterator end();
const_iterator end() const;

注意:迭代器适用于所以容器,迭代器才是容器遍历的主流形式;

【例一】

【例二】

迭代器倒序遍历? ? ?反向迭代器(severse_itreator)

(3)rbegin()? ??返回指向字符串最后一个字符(即其反向开头)的反向迭代器

? ? ? ? ?rend ()? ? ? 返回指向字符串第一个字符(即其反向结尾)的反向迭代器

【例子】

注意匹配使用:

const_iterator ?it ? 本质保护迭代器指向的内容不能修改;
const iterator it ? ?是迭代器本身不能被修改;
在使用迭代器遍历时,迭代器本身是要修改的 ;

(3) 范围for遍历

【例子】

4.string类对象的修改操作

(1)push_back(char c)

功能:在字符串后面尾插一个字符c

【例子】

(2)pop_back()

功能:尾删一个字符

【例子】

?

(3)append

功能:在字符串后面追加一个字符串

【例子】

运行结果:

(4)operator+=

功能:在后面追加字符串str,追加一个字符,追加string对象

【例子】

?

(5)find+npos

功能:从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置,如果没有找到,就返回npos,注意:npos是string类域里面的,使用时需要指定类域【例二】;
如果后面不加起始寻找的位置坐标,则默认是从0开始;
【例一】

【例二】

(6)rfind

功能:从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

其中,每个使用方法和find一样,只是是从后往前找

【例子】

(7)substr()

功能:在str中从pos位置开始,截取len个字符,然后将其返回,当不传入len参数时,默认全部截取

【例子】

?

(8)?c_str

功能:返回C格式字符串
【例子】
(9)erase
功能:从pos位置开始,删除len个字符;
【例子】

?

(10)insert()

功能:在pos位置插入字符或字符串

【例子】

?

?



文章来源:https://blog.csdn.net/2301_77509762/article/details/135412100
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。