std::string类的实现

来源:互联网 发布:迈阿密热线知乎 编辑:程序博客网 时间:2024/06/01 10:50
using namespace   std;class String{public:String(const char *str = NULL);String(const String &other);char* Stringcpy(char *dst,const char *src);~String(void);String & operator=(const String &other);bool operator==(const String &str);friend std::ostream & operator<<(std::ostream& o, const String &str);private:char *m_data;};/*构造、析构、拷贝构造、赋值运、流输出运算*/String::String(const char *str){if (str == NULL){m_data = new char[1];*m_data = '\0';}else{int len = strlen(str);m_data = new char[len + 1];Stringcpy(m_data, str);}}String::~String(void){delete[] m_data;}String::String(const String &other){int len = strlen(other.m_data);m_data = new char[len + 1];Stringcpy(m_data, other.m_data);}char* String::Stringcpy(char *dst,const char *src){assert(dst != NULL);assert(src != NULL);char *ret = dst;while ((*dst++ = *src++) != '\0');return ret;}String & String::operator=(const String &other){if (this == &other)return *this;delete[]m_data;int len = strlen(other.m_data);m_data = new char[len + 1];Stringcpy(m_data, other.m_data);return *this;}bool String::operator==(const String &str){return strcmp(m_data, str.m_data) == 0;}ostream & operator<<(ostream &o, const String &str){o << str.m_data;return o;}int main(){String s = "hello";String s2 = s;String ss = "hello";cout << "s = " << s << endl;cout << "s2 = " << s2 << endl;cout << boolalpha << (ss == s) << std::endl;}

0 0
原创粉丝点击