使用VC6打开考生文件夹proj3下的工程proj3,其中定义了一个字符串变量类StringVar。类成员的说明在程序注释中。请在//********333********和********666********之间填写StringVar成员函数和友元函数

admin2017-02-21  25

问题 使用VC6打开考生文件夹proj3下的工程proj3,其中定义了一个字符串变量类StringVar。类成员的说明在程序注释中。请在//********333********和********666********之间填写StringVar成员函数和友元函数的实现代码。在main函数中给出了一组测试数据,运行时输入:
    Hello Kitty
    此情况下程序的输出应该是:
    Hello Kitty
    Borg
    Borg
    注意:只需在//********333********和//********666********之间填入所编写的若干语句,不要改动程序中的其他内容。
//StringVar.h
#include<iostream>
#include<cstdlib>
#include<cstddef>
#include<cstring>
using namespace std;
void writeToFile(const char *
path);
class StringVar
{
public:
  StringVar(int size);//构造函数,size为字符串长度(字符个数)初始值;字符串内容初始化为空串
    StringVar  (const  char  a[]);//构造函数,用参数数组a的内容初始化当前对象
  StringVar(const StringVar&strobj);//复制构造函数
  ~StringVar(){delete[]value;};//析构函数
  int length() const{return strlen(value);}
  //从输入流ins输入一个字符串,其中可以包括空格
  void input_line(istream&ins);
  //返回字符串首地址
  char * getValue()const{return value;}
private:
  char * value;//字符串首地址
  int max_length;//字符串最大长度(字符个数最大值)
};
//将the_string通过输出流outs输出
ostream&operator<<(ostream&outs,const StringVar the_string);
//main.cpp
#include<iostream>
#include<string>
#include"StringVar.h"
//*********333*********
//*********666*********
int main()
{
  StringVar namel(30),name2("Borg");
  name1.input line(cin);
  StringVar name3(name2);
  cout<<name1<<end1;
  cout<<name2<<end1;
  cout<<name3<<end1;
  writeToFile(".、\\");
  return 0;
  }
  //writeToFile.cpp
  #include<iostream>
  #include<fstream>
  #include<sstream>
  #include<string>
  using namespace std;
  #include"StringVar.h"
  void writeToFile(const char *
  path)
  {
  char filename[30];
  strcpy(filename,path);
  strcat(filename,"out.dat");
  ofstream fout(filename);
  istringstream  is(string("Jenny Zheng"));
  StringVar namel(40),name2("John");
  name1.input_line(is);
  StringVar name3(name2);
  fout<<name1<<name2<<name3;
  fout.close();
}

选项

答案StringVar∷StringVar(int size):max_length(size)//使用成员初始化列表初始化max_length { value=new char[size]; value[0]=’\0’; } StringVar∷StringVar(constchar a[]) { max_length=strlen(a)+1; value=new char[max_length]; strcpy(value,a); } StringVar∷StringVar(const StringVar&strobj) { max_length=strobj.max_length; value=new char[strlen(strobj.value)+1]; strcpy(value,strobj.value); } void StringVar∷input_line(istream&ins) { int i=0; char ch; while(i<max length-1&&(ch=ins.get())!=’\n’) { value[i++]=ch; } value[i]=’\O’; } ostream&operator<<(ostream&outs, const StringVar the_string) { outs<<the string.getValue()<<end1; return outs; }

解析
转载请注明原文地址:https://kaotiyun.com/show/ABAp777K
0

最新回复(0)