home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1991 / 10 / string / striarr.cpp < prev    next >
C/C++ Source or Header  |  1991-07-30  |  529b  |  25 lines

  1. #include <string.h>
  2. #include <ctype.h>
  3. #include <errno.h>
  4. #include <string.hpp>
  5.  
  6. char &String::operator[](int i)
  7. {
  8.     if (!rp || i < 0 || i >= length()) {
  9.         errno = ERANGE;
  10.         return dummy;
  11.     }
  12.     if (rp->refs > 1) {
  13.         srep *p = new(length()) srep(length());
  14.         if (!p) {
  15.             errno = ENOMEM;
  16.             return dummy;
  17.         }
  18.         memmove(p->body,body(),length());
  19.         if (--rp->refs < 1)
  20.             delete rp;
  21.         rp = p;
  22.     }
  23.     return *(rp->body+i);
  24. }
  25.