string

来源:互联网 发布:最喜欢的一句话知乎 编辑:程序博客网 时间:2024/06/16 11:53
#include <iostream>#include <cstring>#include <cassert>using namespace std;class MyString {public:MyString(const char *str = NULL);MyString(const MyString &str);MyString& operator=(const MyString &str);~MyString();private:char *m_data;friend ostream& operator<<(ostream& out, const MyString & str);friend istream& operator>>(istream& in, MyString & str);};MyString::MyString(const char *str){if(NULL == str){this->m_data = new char[1];assert(this->m_data);*(this->m_data) = '\0';}else{size_t len = strlen(str);this->m_data = new char[len + 1];assert(this->m_data);strcpy(this->m_data, str);}}MyString::MyString(const MyString &str){int len = strlen(str.m_data);this->m_data = new char[len + 1];assert(this->m_data);strcpy(this->m_data, str.m_data);}MyString & MyString::operator=(const MyString &str){if(&str == this){return *this;}//release this original memorydelete [] m_data;m_data = 0;int len = strlen(str.m_data);m_data = new char[len + 1];assert(m_data);strcpy(m_data, str.m_data);return *this;}MyString::~MyString(){delete[] m_data;m_data = 0;}ostream& operator<<(ostream& out, const MyString& str){out << str.m_data;return out;}istream& operator>>(istream& in, MyString& str){in >> str.m_data;if(!in){delete[] str.m_data;str.m_data = 0;str = MyString();}return in;}int main(void){MyString A("hello");cout << A << endl;cin >> A;cout << A << endl;return 0;}

0 0
原创粉丝点击