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

📄 mystring.cpp

📁 1、编译原理的词法分析 2、根据输入的文件
💻 CPP
字号:
#include ".\mystring.h"
#using <mscorlib.dll>

bool Mystring::operator >=(Mystring c2)
{   if(*this>c2||*this==c2)return 1;else return 0;}
bool Mystring::operator >=(char *string)
{	if(*this>string||*this==string)return 1;else return 0;}
bool Mystring::operator <=(Mystring c2)
{	if(*this<c2||*this==c2)return 1;else return 0;}
bool Mystring::operator <=(char *string)
{	if(*this<string||*this==string)return 1;else return 0;}
bool Mystring::operator >(Mystring c2)
{	if(*this==c2)return 0;
	else if(*this<c2)return 0;
	else return 1;
}
bool Mystring::operator >(char *string)
{	if(*this==string)return 0;
	else if(*this<string)return 0;
	else return 1;
}
bool Mystring::operator <(Mystring c2)
{	if(*this==c2)return 0;
	char *stri=str,*strr=c2.str;
	while(*stri==*strr){stri++;strr++;}
	if(*stri=='\0') return 1;//stri结束了strr还没有结束
	else if(*strr=='\0') return 0;//strr结束了stri还没有结束
	else if(*stri>*strr) return 0;//两个串的第一个不相等的字符stri大
	else return 1;
}
bool Mystring::operator <(char *string)
{	if(*this==string)return 0;//相等
	char *stri=str;
	while(*stri==*string){stri++;string++;}
	if(*stri=='\0') return 1;//stri结束了string还没有结束
	else if(*string=='\0') return 0;//string结束了stri还没有结束
	else if(*stri>*string) return 0;//两个串的第一个不相等的字符stri大
	else return 1;
}
bool Mystring::operator !=(Mystring c2)
{	return !(*this==c2);}
bool Mystring::operator !=(char *string)
{	return !(*this==string);}

bool Mystring::operator ==(char *string)
{	Mystring buff(string);
	if(*this==buff)return 1;
	else return 0;
}
bool Mystring::operator ==(Mystring c2)
{	if(length==c2.length)
	{int b=length;
	 char *stri=str,*strr=c2.str;
	 while(b)
	 {if(*stri!=*strr) return 0;b--;}
	 return 1;
	}
	else return 0;
}
Mystring::Mystring()
{	str=NULL;length=0;}//初始化为一个空串

Mystring Mystring::operator +=(Mystring c1)
{	*this=*this+c1;
	return *this;
}

Mystring Mystring::operator +(Mystring c2)
{	Mystring buff;
	char *strr,*stri;
	buff.length=length+c2.length-1;//新的存储空间大小
	if(!(buff.str=new char[buff.length]))exit(-1);//分配空间
	stri=buff.str;strr=str;
	while(*strr!='\0'){*stri=*strr;stri++;strr++;}
	strr=c2.str;
	while(*strr!='\0'){*stri=*strr;stri++;strr++;}
	*stri='\0';
	return buff;
}
Mystring Mystring::operator +(char *string)
{	Mystring buff(string);
	return *this+buff;
}
//char * Mystring::operator <<(Mystring c1)
//{	return c1.str;}
void Mystring::Display()
{	cout<<str;}

char &Mystring::operator [](const int i)
{	if(i>=length) 
	{cout<<"Invalid array size";getch();exit(-1);}
	else return *(str+i);
}

void Mystring::operator =(char *string)
{	Mystring buff(string);
	*this=buff;
}
void Mystring::operator =(Mystring c2)
{	if(str)delete str;
	if(!(str=new char[c2.length]))exit(-1);
	char *stri=str;
	char *strr=c2.str;
	while(*strr!='\0')
	{*stri=*strr;stri++;strr++;}
	*(str+c2.length-1)='\0';
	length=c2.length;
}

Mystring::Mystring(char *string)
{	int i=0;
	char *strr=string;
	while(*strr!='\0'){i++;strr++;}
	length=i+1;
	if(!(str=new char[i+1]))exit(-1);//分配内存失败
	char *stri=str;
	while(*string!='\0'){*stri=*string;stri++;string++;}
	*stri='\0';
}

Mystring::Mystring(Mystring &string)
{	if(!(str=new char[string.Length()]))exit(-1);
	char *stri=str;
	char *strr=string.str;
	while(*strr!='\0'){*stri=*strr;stri++;strr++;}
	*stri='\0';length=string.length;
}

Mystring::~Mystring()
{ if(str)delete str;}

int Mystring::Length()
{	return length;}//返回字符串的长度

bool Mystring::isIn(char *word)
{
	char a[64];//字符串最大长度64个 
	int i=0;
	int j;
	while(str[i])
	{	j=0;
		while(str[i]!=' '&&str[i] )
		{
			a[j]=str[i];
			i++;j++;
		}
		a[j]='\0';
		if(strcmp(a,word)==0) return 1;
		while(str[i]==' ') i++;//虑掉空格字符
	}
	return 0;//didn't find
}

⌨️ 快捷键说明

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