63军历任军长名单:关于C++简单编程,高手请进来帮我一下...!

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 16:15:52
编写一个程序,其中有一个简单的串类STRING,包含设置字符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类EDITSTRING,它的基类是STRING,在其中设置一个光标,使其能支持在光标处的插入、替换和删除等编辑功能。

最烦百度的垃圾编辑摸板,把空格都给我忽略了,把程序整的一点也不好看,这点BS百度
class string
{
char *str;
public:
string(char *s);
~string(){delete str;};
int getlen(){return strlen(str)+1;}
char *get(){return str;}
};
class editstring : public string
{
char *str;
unsigned int cursor;
public:
editstring(char *s);
~editstring(){delete str;};
void setcurright(){if(cursor<strlen(str)+1)cursor++;};
void setcurleft(){if(cursor>0)cursor--;};
void insert(char c);
void deletes();
char *get(){return str;}
void replace(char c);
};

string::string(char *s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
}
editstring::editstring(char *s):string(s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
cursor=0;
}
void editstring::insert(char c)
{
int max=strlen(str)+1;
max++;
char *temp=new char[max];
strcpy(temp,str);
str=new char[max];
strcpy(str,temp);
delete temp;
unsigned int j;
for(j=max-2;j>=cursor;j--)
{
str[j+1]=str[j];
}
str[j]=c;
}
void editstring::deletes()
{
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)
{
str[cursor]=c;
}