这里是C++数据结构的字符串,主要是对字符串的一个总结,以及一些基础操作,还详细讲解了单字符串匹配和多模式匹配算法,详情可以跳转链接进入。
废话说到这里,开始上干货
1.字符串的基础
字符串:简称为串,是由0个或者多个字符组成的有限序列,一般记为 s = a 1 a 2 … a n ( 0 ≤ n ≤ ∞ ) s = a_1a_2…a_n(0≤n≤∞) s=a1a2…an(0≤n≤∞)
1.1 C字符串
在C语言中,我们需要注意的就是,字符串的是以\0结尾,空字符又称为结束符,缩写NULL,数值为0的控制字符,而\0则是转义的意思,目的是告诉编译器,此处不是0,而是空字符。
c中常用的有三种字符结构char, char*, char str[](char str[n])。
char:单独使用,表示单字符,空间为1个字节(如果是字符常量,则有4个字节)char*:可以理解为一个指向字符串的指针,指针只有4个字节。char str[]:定义一个字符数组,[]没有数值,所以声明的空间取决于你的初始化。char str[n]:提前声明字符数组的空间,一般长使用这种方式,不然拼接,复制的时候,可能溢出,需要提前预留一定的空间。
1.2 字符串编码
ASCII:最早人们制定的127个字符的编码表,学过C的都知道,A的编码是65,a是97。GB2312、GBK、GB18030:我国指定的中文编码标准。Unicode编码:最常用的如UTF-8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1~6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。
1.3 字符串的存储结构
同样的,字符串的存储结构分为两种,顺序存储和链式存储。


2 字符串操作
字符串的基础操作
- 字符串赋值
- 字符串比较
- 字符串拼接
- 字符串切片
这里做一个简单的总结
| - | C | C++ |
|---|---|---|
| 字符串赋值 | strcpy(),strcpy_s() | = |
| 字符串比较 | strcmp(),strcmp_s() | compare() |
| 字符串拼接 | strcat(),strcat_s() | +,insert() |
| 字符串切片 | strtok(),strtok_s() | substr() |
这里列举了一些常用操作主要是针对C中的char[]和C++中的string来进行的比较,而_s则是微软提供的接口,需要使用vscode或者vs studio等平台使用才行,可以防止操作溢出的问题。
字符串的匹配问题
字符串匹配(String Matching):又称模式匹配(Pattern Matching)。可以简单理解为,给定字符串 T 和 p,在主串 T 中寻找子串 p。主串 T 又被称为文本串,子串 p 又被称为模式串(Pattern)。
多模式匹配问题(Multi Pattern Matching):给定一个文本串 T=t1t2…tn,再给定一组模式串 P=p1,p2,…,pr,其中每个模式串 pi 是定义在有限字母表上的字符串 pi=p1ip2i…pni。要求从文本串 T 中找到模式串集合 P 中所有模式串 pi 的所有出现位置。
具体可以参考一下文章,使用C++解决模式匹配问题
该博客围绕C++数据结构中的字符串展开。介绍了字符串基础,包括C字符串、编码和存储结构;阐述了字符串操作,如赋值、比较等;还详细讲解了单字符串匹配和多模式匹配算法,对C++字符串相关知识进行了全面总结。

561

被折叠的 条评论
为什么被折叠?



