⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tou.h

📁 由于简单模式匹配算法在一次字符比较失败后
💻 H
字号:
#include<iostream.h>
////////////////////////////////////////////////////////////////////////////
class string{//字符串类定义
public:
	//构造函数
	string();
	string(char);
	string(unsigned);
	string(const char*);
	string(const string&);
	//析构函数
	~string();
	//允许子串类访问
	friend class substring;
	//赋值
	void operator=(const string & right);
	void operator=(const char*); 
    void operator=(const char);
	void operator+=(const string & right);
	void operator+(const char*);
	void operator+(const char);
	//取子串
	substring operator()(unsigned start,unsigned len);
	//行输入
	istream & getline(istream &);
    //求字符串长度
	unsigned length()const;
	//访问单个字符
	char & operator[](unsigned index)const;
    //对字符串的多次复制
	void operator*(unsigned time);
	//字符串比较
	friend int operator==(const string &,const string &);
	friend int operator>=(const string &,const string &);
	friend int operator<=(const string &,const string &);
    friend int operator!=(const string &,const string &);
    friend int operator<(const string &,const string &);
	//字符串的比较
	int compare(const string &)const;
	//到普通C字符串的转换
	operator  const char*()const;
protected:
	unsigned buflen;//长度
	char* buffer;//数组名
};
///////////////////////////////////////////////////////////////////////////////
class substring{//对子串赋值,由子串到普通字符串的转换
public:
	//构造函数
	substring(string & base,unsigned start,unsigned len);
	substring(const substring& source);
	//字符串到子串的赋值
	void operator=(const string &)const;
	//子串到字符串的转换
	operator string()const;
private:
	string & base;
	const unsigned start;
	const unsigned len;
};
////////////////////////////////////////////////////////////////////////////////
class stringMatcher{//模式匹配之骨架
public:
	//构造
	stringMatcher(string & t);
	//为构造循环提供函数
	virtual int init();
	int  operator!()const;
	virtual int operator++()=0;
	substring operator()();
	//当前位置访问
	unsigned position()const;
	void position(unsigned p);
	//当前模式长度
	unsigned length();
protected:
	string & text;
	int pos;
	unsigned patlen;
};
//////////////////////////////////////////////////////////////////////////
class SimpleStrMatcher:public stringMatcher
{//简单模式匹配
public:
    SimpleStrMatcher(const string & pat,string & text);
	virtual int operator++();
private:
	const string & pattern;
};
///////////////////////////////////////////////////////////////////////////
class KMPStrMatcher:public stringMatcher
{//kmp模式匹配
public:
	KMPStrMatcher(const string &,string &);
	~KMPStrMatcher();
	//对++运算符重载
	virtual int operator++();
private:
	const string & pattern;
	int *prefix;//指向前缀数组的指针
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -