閱讀以下說明和C++程序,將應(yīng)填入(n)處的字句寫在對(duì)應(yīng)欄內(nèi)?!菊f明】字符串在程序設(shè)計(jì)中扮演著重要角色?,F(xiàn)需要設(shè)計(jì)字符串基類string,包含設(shè)置字 符串、返回
閱讀以下說明和C++程序,將應(yīng)填入(n)處的字句寫在對(duì)應(yīng)欄內(nèi)。
【說明】
字符串在程序設(shè)計(jì)中扮演著重要角色?,F(xiàn)需要設(shè)計(jì)字符串基類string,包含設(shè)置字 符串、返回字符串長度及內(nèi)容等功能。另有一個(gè)具有編輯功能的串類edlt_string,派生于string,在其中設(shè)置一個(gè)光標(biāo),使其能支持在光標(biāo)處的插入、刪除操作。
【程序】
include iostream.h>
include stdio.h>
include string.h>
class string
{
int length;
char *data;
public:
int get_length() {return length;}
char *get_data() {return data;}
~string() {delete data;}
int set data(int in_length, char *in_data);
int set_data(char *data);
void print() {coutdataendl;}
};
class edit_string: public string
{
int cursor;
public:
int get_cursor() {return cursor;}
void move_cursor(int dis) {cursor=dis;}
int add_data(string *new_data);
void delete_data(int num);
};
int string::set_data(int in_length,char *in_data)
{
length=in_length;
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int string::set data(char *in_data)
{
(2)
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int edit_string::add_data(string *new_data)
{
int n,k,m;
char *cp,*pt;
n=new_data->get_length();
pt=new_data->get_data();
cp=this->get_data();
m=this->get_length();
char *news=new char[n+m+1];
for(int i=0; icursor; i++)
news[i]=cp[i];
k=i;
for(int j=0; jn; i++,j++)
news[i]=pt[j];
cursor=i;
for(j=k; jm; j++,i++)
(3)
news[i]='\0';
(4)
delete news;
return cursor;
}
void edit string::delete_data( int num)
{
int m;
char *cp;
cp=this->get_data();
m=this->get_length();
for(int i=cursor; im; i++)
(5)
cp[i]='\0';
}
正確答案:length=strlen(in_data)。 第(3)空和第(4)空在函數(shù)add_data()中,此函數(shù)是派生類中的成員函數(shù),根據(jù)題目要求它要實(shí)現(xiàn)的功能是在光標(biāo)處進(jìn)行插入。在此函數(shù)體中重新分配了一塊內(nèi)存空間,其長度是原有字符串長度和要插入字符串長度之和加1,用來存放這兩個(gè)字符串。第(3)空所在的位置是循環(huán)體下面,根據(jù)循環(huán)體的判斷條件im我們可以想到這是要對(duì)長度為m的字符串進(jìn)行插入。因此,此空答案為news[i]=cp[j]。而第(4)空是在完成了插入工作以后,根據(jù)程序上下文推斷,應(yīng)該是計(jì)算字符長度并返回
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。