#include<iostream>
using namespace std;
#define ok 1
#define error 0
typedef int Status;
//------------------串的堆分配存储表示-------------------
typedef struct{
char *ch;//若是非空串,则按串长分配存储区,否则ch为NULL
int length;//串长度
}HString;
//------------------基本操作的函数原型说明---------------
class StringOperation
{
public:
//生成一个其值等于串常量chars的串T
Status StrAssign(HString &T,char *chars,int length);
//返回S的元素个数,称为串的长度
int StrLength(HString S);
//若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0
int StrCompare(HString S,HString T);
//将S清为空串,并释放S所占空间
Status ClearString(HString &S);
//用T返回由S1和S2连接而成的新串
Status Concat(HString &T,HString S1,HString S2);
//1<=pos<=StrLength(S)且0<=len<=StrLength(S)-pos+1
//返回串S的第pos个字符起长度为len
Status SubString(HString &Sub,HString S,int pos,int len);
//若主串S中存在和串T值相同的子串,则返回它在主串中S中第pos个字符之后第一次出现的位置,否则函数值为0
int Index(HString S,HString T,int pos);
//采用KMP算法进行模式匹配
int Index_KMP(HString S,HString T,int pos);
//若串S,T,V存在,且串T是非空串,用V替换主串S中出现的所有与T相等的不重叠的子串
Status Replace(HString &S,HString T,HString V);
//若串S存在,则输出串S总的字符
Status StrOutput(HString S);
//若串S为空串则返回true,否则返回false
Status StrEmpty(HString S);
//在串S的第pos个字符之前插入串T
Status StrInsert(HString &S,int pos,HString T);
//串S存在,由串S复制得到串T
Status StrCopy(HString &T,HString S);
//从串S中删除第pos个字符起长度为len的子串
Status StrDelete(HString &S,int pos,int len);
//销毁串S
Status StrDestroy(HString &S);
};//StringOperation
Status StringOperation::StrAssign(HString
串的基本操作
最新推荐文章于 2022-04-05 20:58:38 发布
本文介绍了一个C++实现的串类,包括串的生成、长度获取、比较、清空、连接、子串提取、模式匹配等功能。其中,模式匹配采用了KMP算法,还提供了替换、插入、删除等高级操作。
摘要由CSDN通过智能技术生成