#include "String.h"
String::String(char *pstr)
{
if(pstr)
{
m_buf=new char(strlen(pstr)+1);
strcpy(m_buf,pstr);
}
else
{
m_buf=new char[1];
*m_buf='\0';
}
}
String::String(const String &str)
{
m_buf=new char[strlen(str.m_buf)+1];
strcpy(m_buf,str.m_buf);
}
String::~String()
{
cout<<"调用析构函数"<<endl;
if(NULL != m_buf)
{
//delete [] m_buf;
//m_buf=NULL;
}
}
void String::Show_string()
{
if(*m_buf!='\0')
{
cout<<"the string is:"<<endl;
cout<<m_buf<<endl;
}
else cout<<"the string is NULL"<<endl;
}
void String::Add(String &str)
{
if(*str.m_buf='\0')
return;
int nlength=Getlength();
char *p=new char(nlength);
strcpy(p,m_buf);
delete []m_buf;
m_buf =new char(nlength-1+str.Getlength());
strcpy(m_buf,p);
strcat(m_buf,str.m_buf);
delete []p;
cout<<"after add:"<<m_buf<<endl;
}
void String::Copy(const String &str)
{
cout << m_buf << endl;
//delete [] m_buf;
m_buf=new char[strlen(str.m_buf)+1];
strcpy(m_buf,str.m_buf);
cout<<"after copy:"<<m_buf<<endl;
}
int String::Getlength()
{
return strlen(m_buf)+1;
}
void main()
{
String str1("Hello!");
//String str2("OK!");
String str3("Hello");
//str1.Show_string();
//str2.Show_string();
//str3.Show_string();
str1.Copy(str3);
//str1.Copy(str2);
//cout<<"the length of the string is:"<<str1.Getlength()<<endl;
}
#include <iostream>
using namespace std;
class String
{
public:
String(char *pstr);
String(const String &str);
~String();
public:
void Show_string();
void Add( String &str);
void Copy(const String &str);
int Getlength();
private:
char *m_buf;
};