home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_10_09 / 1009101a < prev    next >
Text File  |  1992-07-07  |  956b  |  57 lines

  1.  
  2. Listing 2
  3.  
  4. #include <iostream.h>
  5. #include <string.h>
  6.  
  7. class String
  8.     {
  9.     friend ostream &operator<<
  10.         (ostream &os, const String &s);
  11. public:
  12.     String(const char *s);
  13.     ~String() { delete [] str; }
  14.     size_t length() { return len; }
  15.     String &operator+=(char c);
  16. private:
  17.     size_t len;
  18.     char *str;
  19.     };
  20.  
  21. String::String(const char *s)
  22.     {
  23.     len = strlen(s);
  24.     str = new char[len + 1];
  25.     strcpy(str, s);
  26.     }
  27.  
  28. String &String::operator+=(char c)
  29.     {
  30.     char *p = strcpy(new char[len + 2], str);
  31.     p[len++] = c;
  32.     p[len] = '\0';
  33.     delete str;
  34.     str = p;
  35.     return *this;
  36.     }
  37.  
  38. ostream &operator<<(ostream &os, const String &s)
  39.     {
  40.     return os << s.str;
  41.     }
  42.  
  43. int main()
  44.     {
  45.     String s1("Hello");
  46.     String s2 = s1;
  47.     cout << "s1 = " << s1 << '\n';
  48.     cout << "s2 = " << s2 << '\n';
  49.     s1 += '!';
  50.     cout << "s1 = " << s1 << '\n';
  51.     cout << "s2 = " << s2 << '\n';
  52.     return 0;
  53.     }
  54.  
  55. ----------
  56.  
  57.