C++ Mystring 类实现:字符串操作与重载运算符
#include "mystring.h" #include <string.h>
Mystring::Mystring(const char *str) { if(nullptr == str) { m_data = new char[1]; *m_data = '\0'; }else { m_data = new char[strlen(str) + 1]; strcpy(m_data, str); } }
Mystring::~Mystring() { if(nullptr != m_data) { delete [] m_data; } m_data = nullptr; }
Mystring::Mystring(const Mystring &str) { m_data = new char[strlen(str.m_data) + 1]; strcpy(m_data, str.m_data); }
Mystring& Mystring::operator=(const Mystring &str) { if(this == &str) { return *this; } delete [] m_data; m_data = new char[strlen(str.m_data) + 1]; strcpy(m_data, str.m_data); return *this; }
Mystring Mystring::operator+(const Mystring &str) { Mystring tmp; delete [] tmp.m_data; tmp.m_data = new char[strlen(m_data) + strlen(str.m_data) + 1]; strcpy(tmp.m_data, m_data); // strcat(tmp.m_data, str.m_data); strcpy(tmp.m_data + strlen(m_data), str.m_data); return tmp; }
bool Mystring::operator>(const Mystring &str) { if( strcmp(m_data, str.m_data) > 0 ) { return true; } return false; }
char Mystring::operator[](int index) { return m_data[index]; }
ostream& operator<<(ostream &out, const Mystring &str) { out << str.m_data; return out; }
原文地址: https://www.cveoy.top/t/topic/quIG 著作权归作者所有。请勿转载和采集!