小工具知识网

当前位置: 首页 > 行业知识 > STL—string类

行业知识

STL—string类

2026-11-03 01:10:31 来源:互联网转载

目录

1、为什么要学习string?

2、介绍

3、特点

4、string类常用构造函数

5、string类的析构函数

6、string类对象的遍历和访问

7、string类对象的容量操作

8、at和[ ]

9、增删查改(注意很多函数都重载了好几个函数,下述只举例常见的,具体可查阅文档)

10、assign:赋值

11、replace和find联合使用,将字符串中的所有空格替换成%

12、c_str():将string类型转化为const char*

13、substr:从字符串pos位置开始,将往后len个字符组成新字符串返回。

(1)、找出文件名的后缀

(2)、将网址的三部分分离(协议、域名、文件路径)

14、find_first_of 和 find_last_of

15、find_first_not_of 和 find_last_not_of

16、getline:读取一段字符串,遇到换行结束

17、解决浅拷贝的问题

18、注意编码问题

19、string类模拟实现



1、为什么要学习string?

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象编程)的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数。

2、介绍

1. 字符串是表示字符序列的类。 2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。 3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型 4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数 5. 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列,这个类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

3、特点

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

4、string类常用构造函数

1、string() :构造空的string类对象,即空字符串(重点) 2、string(const char* s) :用C-string来构造string类对象(重点) 3、string(const string&s) 拷贝构造函数(重点) 4、string(size_t n, char c) :string类对象中包含n个字符c
//空字符串string test1;//用C-string构造string类对象string test2("hello");//拷贝构造string test3 = test1;string test4(test2);//使string对象包含n个字符string test5(5, 'a');

注意:string类是重载了流插入和留提取运算符,所以其对象可以直接使用cout和cin;

这里只举例常见的构造,具体可前往官网查看文档。

5、string类的析构函数

因为string类支持cin,所以底层实现是右new操作符动态开辟空间的,所以需要析构函数~string()释放,但析构函数是自动调用的,所以平时可以不管。

6、string类对象的遍历和访问

(1)、利用流插入运算符重载

(2)、string类运算符重载了[ ],所以可以用[ ]进行读写(注意[ ]重载提供了两个版本,有个版本用const修饰了this指针,返回值也会const引用,所以只可读不能写,具体查看文档)

int main(){string s1("hello world");//读for (int i = 0; i 

上一篇:下载Tegam的详细步骤指南!轻松掌握下载技巧!

下一篇:怎么查找服务器的地址?