天天看點

自己寫一個字元串類

#include<iostream>

#include<string>

using namespace std;

class Mystring

{

private:

 char *m_buf;

public:

 Mystring(char *p=""):m_buf(p)

 {

  this->m_buf=new char[strlen(p)+1];

  strcpy(m_buf,p);

 }

 Mystring(const Mystring &s)

 {

  m_buf=new char[strlen(s.m_buf)+1];

  strcpy(m_buf,s.m_buf);

 }

 ~Mystring()

 {

  delete []m_buf;

 }

 void show()const;

 int Getlength()const;

 void Copy(const Mystring &s);

 Mystring Add(const Mystring &s);

};

void Mystring::show()const

{

 cout<<this->m_buf<<endl;

}

int Mystring::Getlength()const

{

 return strlen(this->m_buf);

}

void Mystring::Copy(const Mystring &s)

{

 delete []m_buf;

 m_buf=new char[s.Getlength()+1];

 strcpy(m_buf,s.m_buf);

}

Mystring Mystring::Add(const Mystring &s)

{

 //delete []m_buf;

 Mystring r;

 delete []r.m_buf;

 r.m_buf=new char[s.Getlength()+this->Getlength()+1];

 strcpy(r.m_buf,this->m_buf);

 strcat(r.m_buf,s.m_buf);

 return r;

}

void main()

{

 Mystring m("hello");

 Mystring k("abc");

 m.show();

 //m.Getlength();

 //cout<<m.Getlength()<<endl;//測試用途

 //m.Copy(k);

 m.show();

 m.Add(k).show();

}