📄 tou.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 + -