/* string.h * */ #ifndef _MYSTRING_ #define _MYSTRING_ #include <cstring> #include <iostream> using namespace std; class MyString { friend bool operator==(const MyString&, const MyString &); friend ostream& operator<<(ostream&, const MyString &); private: char *str_; int length_; MyString(int); public: MyString(); MyString(char); MyString(const char *); MyString(const MyString &); MyString& operator=(const MyString &); ~MyString(); int length() const; int indexOf(char, int = 0) const; bool isSubstring(const MyString &) const; bool isSubstring(const char *) const; MyString& concat(const MyString &); MyString& concat(const char *); void printStr(void) const; MyString operator!() const; char& operator[](int); char operator[](int) const; }; bool operator==(const MyString&, const MyString &); ostream& operator<<(ostream&, const MyString &); inline MyString::MyString() { length_ = 0; str_ = new char[1]; str_[0] = '\0'; } inline MyString::MyString(char ch) { length_ = 1; str_ = new char[2]; str_[0] = ch; str_[1] = '\0'; } inline int MyString::length() const { return length_; } inline void MyString::printStr(void) const { cout << "length: " << length_ << ", value: \"" << str_ <<"\""; } #endif