String,strcpy,strcat,strlen

来源:互联网 发布:网络安全保卫大队在哪 编辑:程序博客网 时间:2024/05/10 03:20

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*/     }
0 0
原创粉丝点击