string的常用接口讲述(跑路人笔记)<stl初阶>(1)

简介: string的常用接口讲述(跑路人笔记)<stl初阶>

前言

string介绍主要来自网站cplusplus.com我尽量将自己的想法和网站文档给的相结合,增加思考以方便我们的记忆

也可以去C++的官网上查看最新的文档记录cppreference.com

此篇博客就是要以string为例子讲述第一个网站的使用。

string


string是一个用于表示字符串的类,里面有大量已经封装好的成员,函数等.不过也常有大佬表示string类里塞了太多东西显得十分臃肿不堪.但是作为C++的一个库类他依旧是十分优秀的一个功能,本篇文章就是将string里常用的函数接口向大家介绍一番.(更况且大部分的题目都有他的身影)


string这个类被放在<string>这个库中,在使用的时候#include<string>一下即可。


网站将此信息放在红框圈住的部分中了。


image.png


接下来让我们看看string的介绍吧。


image.png


下面的英文是对string的文字介绍。


用有道翻译如下


image.png


不细讲了,大家有兴趣的话可以自己看。


string结构剖析

这里存放的就是string的结构部分了。—这部分是文本介绍的下面所有内容。


image.png


构造函数

既然是类的我们就要看一下他的构造函数了。


image.png


我们的库一共提供了如此多的构造函数,而我们比较常用的是那些呢?


其实比较常用的也就是(1)(2)(4)其他部分也就没那么常用。


介绍一下吧


(1)部分就是传递无参的构造函数。(字符串是空字符串"\0")


(2)部分其实就是一个拷贝构造


(3)部分我们可以从一个常量字符串部分读取部分,pos是我们读取的位置,len是从pos位置读取的长度。 如下


image.png


(3)部分中的len的缺省值npos其实是类里的一个静态成员变量,如下图:



image.png

因为是size_t类型的-1所以其实是最大的int值。也就是说,如果我们用这个构造函数不传len的话其实是 默认从pos的位置初始化到结束部分。


(4)部分其实就是传递一个常量字符串


(5)部分传递一个常量字符串 n是从下标的某个位置开始打印。


(6)是传递n个字符c


(7)部分需要后续内容才可以讲解。


析构函数没什么可讲的,string只提供了一个析构函数还是自动调用跟我们使用者几乎没有关系 。


迭代器


image.png

注:在上面表格里我们可以看见类似于const_reverse_iterator这样的,其实在前面有注释,


注释如下:


image.png


迭代器其实在链表或者vector讲会更好但是迭代器其实会一个其他的都会了,所以还是放在一起讲了吧。


我们使用迭代器的时候格式如下(我直接使用具体例子吧,也方便大家理解)


int main()
{
  string s = "asdfghjkl";
  string::iterator it = s.begin();//迭代器
//  类型  ::iterator 迭代器名称 = 对象的接口函数。
  cout << s << endl;
  return 0;
}



此时这个it就相当于指向s中下标0的指针。(s.begin()这个函数返回值就是其实位置的迭代器的值,见最上表的begin的definition)


所以我们也就可用通过迭代器来遍历我们的string类。


image.png


值得注意的是我们迭代器的s.end()函数的返回值是指向最后一个元素的下一位(在string中就是指向’\0’的位置)


我们上面还有rbegin和rend,我们看后面的解释的时候可以看出他是反向是用的迭代器接口。



image.png

在使用上几乎没有区别,只是我们需要讲iteratior改成reverse_iteratior,然后调用rbegin等接口即可。


我们的普通迭代器是可读可写的当然前提是对象是可读可写的


而我如果想使用一个只能读不能写的一个迭代器呢?


也很简单只需要在前面加上const_


实例如下


image.png


这里我们就不能进行更改了。


(注:如果我们的string被const修饰了我们就只能使用有const_的迭代器)


相关文章
|
7月前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
326 5
|
7月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
219 2
|
8月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
106 4
|
8月前
|
编译器 C语言 C++
【C++】C++ STL 探索:String的使用与理解(三)
【C++】C++ STL 探索:String的使用与理解
118 2
|
8月前
|
存储 编译器 C++
【C++】C++ STL 探索:String的使用与理解(二)
【C++】C++ STL 探索:String的使用与理解
|
8月前
|
编译器 C语言 C++
【C++】C++ STL 探索:String的使用与理解(一)
【C++】C++ STL 探索:String的使用与理解
238 1
|
10月前
|
存储 算法 程序员
【STL】string
【STL】string
|
9天前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
|
3月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
97 11
|
3月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。