📄 string.h
字号:
#include <assert.h>
#include <iostream.h>
class string {
public:
string(){buflen=1; buffer= new char[buflen]; assert(buffer!=0);
buffer[0]='\0'; };
string(char c ){buffer=new char[2]; assert(buffer!=0);
buffer[0]=c; buffer[1]='\0'; buflen=2;};
string(unsigned size);
string(const char* inittext);
string(const string & initstr);
//~string();
friend class substring;
unsigned length() const;
void operator=(const string & right);
char & operator[](unsigned index )const;
void operator+=(const string & v);
int compare(const string & ) const;
operator const char*() const;
substring operator()(unsigned start, unsigned len);
friend void load_data();//存盘函数
private:
unsigned buflen;
char * buffer;
};
string::string(unsigned size) {
buflen=size+1; buffer=new char[buflen];
assert(buffer!=0);
for (unsigned i=0; i<buflen; i++) buffer[i]='\0';}
string::string(const char* inittext) {
for (unsigned i=0; inittext[i]!='\0'; i++) buflen=i+1;
if (i==0) buflen=1;
buffer=new char[buflen];
assert(buffer!=0);
for ( i=0; i<buflen; i++) buffer[i]=inittext[i];
buffer[i]='\0';
}
string::string(const string & initstr):buflen(initstr.buflen) {
buffer=new char[initstr.buflen]; assert(buffer!=0);
for (unsigned i=0; i<buflen; i++) buffer[i]=initstr[i];
buffer[i]='\0';
}
//string::~string() {delete []buffer; buffer=0;}
unsigned string::length() const
{for (unsigned i=0; buffer[i]!='\0'; i++);
return i;}
void string::operator=(const string & right)
{const unsigned rightlength=right.length();
if (rightlength>= buflen)
{ buflen=rightlength+1;
buffer=new char[buflen];
assert(buffer!=0); }
for (unsigned i=0; i<=buflen; i++) buffer[i]=right.buffer[i];
buffer[i]='\0';
}
char nothing;
char & string::operator[](unsigned index) const
{if (index>=buflen) { nothing='\0'; return nothing; }
return buffer[index];}
void string::operator+=(const string & v)
{ unsigned i;
unsigned conlen=length()+v.length();
if (conlen>= buflen)
{ char * newbuffer=new char[1+conlen]; assert(newbuffer!=0);
for (i=0; i<length(); i++) newbuffer[i]=buffer[i];
delete []buffer; buffer=newbuffer; buflen=1+conlen;}
else i=length();
for (unsigned j=0; i<conlen; i++,j++) buffer[i]=v.buffer[j];
buffer[i]='\0';
}
int string::compare(const string & v) const
{char *p=buffer; char *q=v.buffer;
for(;(*p!='\0')&&(*p==*q);p++,q++); return *p-*q;}
string::operator const char*() const
{return buffer;}
int operator<=(const string & left,const string & right)
{ return left.compare(right)<=0; }
int operator>=(const string & left,const string & right)
{ return left.compare(right)>=0; }
int operator<(const string & left,const string & right)
{ return left.compare(right)<0; }
int operator>(const string & left,const string & right)
{ return left.compare(right)>0; }
int operator==(const string & left,const string & right)
{ return left.compare(right)==0; }
int operator!=(const string & left,const string & right)
{ return left.compare(right)!=0; }
string operator+(const string & left,const string & right)
{ string result(left); result+=right; return result; }
istream & operator>>(istream & in,string & str)
{ char inbuffer[1000];
if (in>>inbuffer)
str=inbuffer;
else str="";
return in; }
ostream & operator<<(ostream & out, const string & str)
{ for (unsigned i=0; str[i]!='\0'; i++)
out<<str[i];
return out; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -