1,string
class String
{
public:
String(const char* str =NULL);
String(const String& str);
~String();
String operator+(const String& str);
String &operator=(const String& str);
bool operator==(const String &str);
int lenght();
friend ostream & operator<<(ostream &o,const String &str);
String SubStr(int start,int end);
private:
char* m_data;
};
String::String(const char* str)
{
if(str == NULL)
{
m_data = new char[1];
m_data = '\0';
}
else
{
m_data = new char[strlen(str)+1];
strcpy(m_data,str);
}
}
String::String(const String & str)
{
m_data = new char[strlen(str.m_data)+1];
strcpy(m_data,str.m_data);
}
String::~String()
{
delete[] m_data;
}
String String::operator+(const String& str)
{
String res;
delete[] res.m_data;
res.m_data = new char[strlen(m_data)+strlen(str.m_data)+1];
strcpy(res.m_data,m_data);
strcpy(res.m_data+strlen(m_data),str.m_data);
return res;
}
String& String::operator=(const String &str)
{
if(m_data == str.m_data)
returen *this;
delete[] m_data;
m_data = new char[strlen(str.m_data)+1];
strcpy(m_data,str.m_data);
return * this;
}
bool String::operator==(const String &str)
{
return strcmp(m_data,str.m_data) ==0;
}
int String::Length()
{
return strlen(m_data);
}
ostream& operator<<(ostream&o ,const String& str)
{
o<<str.m_data;return o;
}
String String::SubStr(int start,int end)
{
String res;
delete [] res.m_data;//delelte old memory;
re.m_data = new char[end-start+1];
for(int i=0;i+start<end;i++)
{
res.m_data[i] = m_data[start+i];
}
res.m_data[end-start] ='\0';
return res;
}
2,strcpy
char* strcpy_t(char* strDest,const char* strSrc)
{
assert((strDest!=NULL)&&(strSrc!=NULL));
//#include "assert.h"
char *address =char* strDest;
while((*strDest++ = * strSrc++)!='\0');
return address;
}
int strlen_t(const char* str)
{
assert(str!=NULL);
int n-0;
while((*str++)!='\0')
{
n++;
}
return n;
}
char* _cdecl strcat(char* strDest,const char* strSrc)
{
char* cp = dst;
cp++; //find end of dst;
while(*cp++ == *src++); /*Copy src to end of dst*/
return (dst);/* return dst*/
}