// Interface for a simple String class to encapsulate a C character string #ifndef _MYSTRING_H_ #define _MYSTRING_H_ #include using namespace std; class MyString { public: // Constructors and destructor MyString(const char * = ""); // Create from C string MyString(const MyString &); // Copy constructor ~MyString() { delete [] sdata; } // Assignment MyString & operator = (const MyString &); MyString & operator = (const char *); // Character access char & operator [] (int i); char operator [] (int i) const { return (i < 0 || i >= len) ? '\0' : sdata[i]; } // Concatenation MyString operator + (const MyString &) const; // Cast to c string operator const char * () const { return sdata; } // Query methods unsigned int length() const { return len; } private: char * sdata; // Storage for the characters unsigned int len; // Current length // Private constructor for pre-allocation MyString(const char *, unsigned int); }; inline ostream & operator << (ostream & o, const MyString & s) { return o << (const char *) s; } #endif