📄 shiti3_5_1.cpp
字号:
#include<iostream.h>
#include<string.h>
class String
{
public:
~String(){delete[]str;}
int Setstr(int l,char *s);
int Setstr(char *s);
int Getlen(){return len;}
char *Getstr(){return str;}
void Print(){cout<<str<<endl;}
private:
int len;
char *str;
};
class EditString:public String
{
public:
void MoveCursor(int off){cursor=off;}
int Add(String *s);
int Replace(String *s);
void Delete(int pos);
int GetCursor(){return cursor;}
private:
int cursor;
};
int String::Setstr(int l,char *s)
{
len=l;
if(!str)delete str;
str=new char[len+1];
strcpy(str,s);
return len;
}
int String::Setstr(char *s)
{
len=strlen(s);
if(!str)delete str;
str=new char[len+1];
strcpy(str,s);
return len;
}
int EditString::Add(String *s)
{
int n,k,m;
char *cp,*pt;
n=s->Getlen();
pt=s->Getstr();
cp=this->Getstr();
m=this->Getlen();
char *news=new char[n+m+1];
for(int i=0;i<cursor;i++)
news[i]=cp[i];
k=i;
for(int j=0;j<n;i++,j++)
news[i]=pt[j];
cursor=i;
for(j=k;j<m;j++,i++)
news[i]=cp[j];
news[i]='\0';
Setstr(news);
delete news;
return cursor;
}
int EditString::Replace(String *s)
{
int n,m;
char *pt,*news;
n=s->Getlen();
pt=s->Getstr();
m=this->Getlen();
news=new char[m>n+cursor?m+1:n+cursor+1];
news=this->Getstr();
for(int i=cursor,j=0;i<n+cursor;j++,i++)
news[i]=pt[j];
if(m<n+cursor)news[i]='\0';
cursor=i;
Setstr(news);
delete news;
return cursor;
}
void EditString::Delete(int pos)
{
int m;
char *cp;
cp=this->Getstr();
m=this->Getlen();
for(int i=cursor;i<m;i++)
cp[i]=cp[i+pos];
cp[i]='\0';
}
void main()
{
String s1;
EditString s2;
char *cp;
s1.Setstr("Object-oriented Programming!");
cp=s1.Getstr();
s2.Setstr(cp);
s2.Print();
s2.MoveCursor(16);
s1.Setstr("Windows");
s2.Add(&s1);
s2.Print();
s2.MoveCursor(7);
s2.Delete(9);
s2.Print();
s1.Setstr("TTT");
s2.Replace(&s1);
s2.Print();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -