请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h.proj3.cpp、writeToFile.obj。 补充完成proj3.h,实现默认构造函数Min

admin2015-06-27  30

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h.proj3.cpp、writeToFile.obj。
补充完成proj3.h,实现默认构造函数MiniString(constchar*s="")和析构函数~MiniString()。
要求:
补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//proj3.h
#include
#include
usingnamespacestd;
classMiniString
{public:
friendostream&operator<<(ostream
&output,constMiniString&s)
//重载流插入运算符
{output<}
friendistream&operator>>(istream
&input,MiniString&s)
//重载流提取运算符
{chartemp[100];
//用于输入的临时数组
temp[0]=’\0’;
//初始为空字符
input>>setw(100)>>temp;
intinLen=strlen(temp);//输入字符串长度
if(inLen!=0)
{
s.length=inLen;//赋长度
if(s.sPtr!=0)delete[]s.sPtr;
//避免内存泄漏
s.sPtr=newchar[s.length+1];
strcpy(s.sPtr,temp);
//如果s不是空指针,则复制内容
}
elses.sPtr[0]=’\0’;
//如果s是空指针,则为空字符串
returninput;
}
//*************333***********
//*************666***********
private:
intlength;
//字符串长度(不超过100个字符)
char*SPtr;
//指向字符串起始位置
},
//proj3.cpp
#include
#include
usingnamespacestd;
#include"proj3.h"
intmain()
{
voidwriteToFile(char*);
MiniStringstrl("Happy"),
cout;<writeToFile("");
return0;
}

选项

答案MiniString( const char *s = " ") { length = strlen(s); sPtr = new char[length+1]; strcpy(sPtr, s); } ~MiniString() { delete [] sPtr; }

解析 主要考查考生对构造函数和析构函数的掌握,题目要求完成默认构造函数和析构函数,先看私有成员:
int length; // 字符串长度(不超过100个字符)
char *sPtr; // 指向字符串起始位置
因此先使用strlen函数计算字符串长度,然后给sPtr分配空间,再使用strcpy复制字符串,最后在折构函数中使用delete语句释放空间。
转载请注明原文地址:https://jikaoti.com/ti/3bXiFFFM
0

相关试题推荐
随机试题
最新回复(0)