#include<iostream>
#include<cstring>
using namespace std;
class string
{
private:
char *str;
public:
string(char *s);
~string(){delete str;};
int getlen(){return strlen(str)+1;}
char *get(){return str;}
void print();
};
string::string(char *s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cout<<"constructing string"<<endl;
}
void string::print()
{
cout<<"åæ°ç»ä¸º:"<<str<<endl;
}
class editstring : public string
{
private:
char *str;
unsigned int cursor;
public:
editstring(char *s);
~editstring(){delete str;};
void setcurright()
{
if(cursor<strlen(str)+1)
cursor++;
cout<<"å
æ ç¹å³ç§»ä¸º:"<<cursor<<endl;
};
void setcurleft()
{
if(cursor>0)
cursor--;
cout<<"å
æ ç¹å·¦ç§»ä¸º:"<<cursor<<endl;
};
void insert(char c);
void deletes();
char *get(){return str;}
void replace(char c);
void print();
};
editstring::editstring(char *s):string(s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cursor=0;
cout<<"constructing editstring"<<endl;
}
void editstring::insert(char c)
{
cout<<"æå
¥åæ¯:"<<c<<""<<endl<<"ç®åå
æ ç¹ä¸º"<<cursor<<""<<endl;
int max=strlen(str)+1;
max++;
char *temp=new char[max];
strcpy(temp,str);
str=new char[max];
strcpy(str,temp);
unsigned int j;
for(j=cursor;j<max-1;j++)
{
str[j+1]=temp[j];
}
str[cursor]=c;
delete []temp; //delete temp.ä¸æ ·åï¼
}
void editstring::deletes()
{
cout<<"å é¤å½æ°è¢«è°ç¨ã"<<endl<<"ç®åå
æ ç¹ä¸º"<<cursor<<""<<endl;
int max=strlen(str)+1;
int i=0;
for(i=cursor;i<max;i++)
{
str[i]=str[i+1];
}
i--;
str[i]='\0';
}
void editstring::replace(char c)
{
cout<<"æ¿æ¢å½æ°è¢«è°ç¨ã"<<endl<<"ç®åå
æ ç¹ä¸º"<<cursor<<""<<endl;
str[cursor]=c;
}
void editstring::print()
{
cout<<"ç¼è¾åçæ°ç»ä¸º:"<<str<<endl;
}
void main()
{
editstring p("china");
p.string::print();
p.setcurright();
p.setcurright();
p.setcurleft();
p.deletes();
p.editstring::print();
p.insert('a');
p.editstring::print();
p.deletes();
p.editstring::print();
p.replace('s');
p.editstring::print();
}
温馨提示:答案为网友推荐,仅供参考