MyString类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、MyString类设计 #include <string.h>
class MyString { private: char * text; unsigned length; int compare(const MyString& str) { return strcmp(text, str.text); };
}
9
更完善的代码:
MyString& MyString::operator=(const MyString& str) { length = str.length; if (text) delete text; if (str.text == NULL) text = NULL; else { text = new char[length+1]; memcpy(text, str.text, length+1); } return *this; }
10
MyString operator+(const MyString& str1, const MyString& str2) { MyString temp; temp.length = str1.length + str2.length; temp.text = new char[ temp.length+1 ]; memcpy(temp.text, str1.text, str1.length); memcpy(&temp.text[str1.length], str2.text, str2.length); temp.text[temp.length] = 0; return temp; }
4
MyString::MyString(const char * cstr) {
length = strlen(cstr); text = new char[length+1]; memcpy(text, cstr, length+1); }
5
更完善的代码:
MyString::MyString(const char * cstr) { if (cstr==NULL || cstr[0]==0) { length = 0; text = NULL; } else { length = strlen(cstr); text = new char[length+1]; memcpy(text, cstr, length+1); } }
3
unsigned GetLength() { return length; } char * GetText() { return text; } };
MyString:: MyString() { text = NULL; length = 0; }
MyString:: ~MyString() { if (text != NULL) delete text; };
1
public: MyString(); MyString(const MyString& str); MyString(const char * cstr); ~MyString() MyString& operator=(const MyString& str); friend MyString operator+(const MyString& str1, const MyString& str2);
2
int operator<(const MyString& str) { return ( compare(str) < 0 );} int operator>(const MyString& str) { return ( compare(str) > 0 ); } int operator<=(const MyString& str) { return ( !(compare(str) > 0) ); } int operator>=(const MyString& str) { return ( !(compare(str) < 0) ); } int operator==(const MyString& str) { return ( compare(str) == 0 ); } int operator!=(const MyString& str) { return ( compare(str) != 0 ); }
6
MyString::MyString(const MyString& str) { length = str.length;
text = new char[length+1]; memcpy(text, str.text, length+1); }
7
更完善的代码: MyString::MyString(const MyString& str) { length = str.length; if (str.text == NULL) text = NULL; else { text = new char[length+1]; memcpy(text, str.text, length+1); } }
8
MyString& MyString::operator=(const MyString& str) { length = str.length; delete text;
text = new char[lenቤተ መጻሕፍቲ ባይዱth+1]; memcpy(text, str.text, length+1); return *this;
11
class MyString { private: char * text; unsigned length; int compare(const MyString& str) { return strcmp(text, str.text); };
}
9
更完善的代码:
MyString& MyString::operator=(const MyString& str) { length = str.length; if (text) delete text; if (str.text == NULL) text = NULL; else { text = new char[length+1]; memcpy(text, str.text, length+1); } return *this; }
10
MyString operator+(const MyString& str1, const MyString& str2) { MyString temp; temp.length = str1.length + str2.length; temp.text = new char[ temp.length+1 ]; memcpy(temp.text, str1.text, str1.length); memcpy(&temp.text[str1.length], str2.text, str2.length); temp.text[temp.length] = 0; return temp; }
4
MyString::MyString(const char * cstr) {
length = strlen(cstr); text = new char[length+1]; memcpy(text, cstr, length+1); }
5
更完善的代码:
MyString::MyString(const char * cstr) { if (cstr==NULL || cstr[0]==0) { length = 0; text = NULL; } else { length = strlen(cstr); text = new char[length+1]; memcpy(text, cstr, length+1); } }
3
unsigned GetLength() { return length; } char * GetText() { return text; } };
MyString:: MyString() { text = NULL; length = 0; }
MyString:: ~MyString() { if (text != NULL) delete text; };
1
public: MyString(); MyString(const MyString& str); MyString(const char * cstr); ~MyString() MyString& operator=(const MyString& str); friend MyString operator+(const MyString& str1, const MyString& str2);
2
int operator<(const MyString& str) { return ( compare(str) < 0 );} int operator>(const MyString& str) { return ( compare(str) > 0 ); } int operator<=(const MyString& str) { return ( !(compare(str) > 0) ); } int operator>=(const MyString& str) { return ( !(compare(str) < 0) ); } int operator==(const MyString& str) { return ( compare(str) == 0 ); } int operator!=(const MyString& str) { return ( compare(str) != 0 ); }
6
MyString::MyString(const MyString& str) { length = str.length;
text = new char[length+1]; memcpy(text, str.text, length+1); }
7
更完善的代码: MyString::MyString(const MyString& str) { length = str.length; if (str.text == NULL) text = NULL; else { text = new char[length+1]; memcpy(text, str.text, length+1); } }
8
MyString& MyString::operator=(const MyString& str) { length = str.length; delete text;
text = new char[lenቤተ መጻሕፍቲ ባይዱth+1]; memcpy(text, str.text, length+1); return *this;
11