#ifndef __STRING_HPP #define __STRING_HPP class ostream; class istream; class String { char *buf; int buflen; int textlen; public: String(); String(const String& s); String(const char *s); String(istream& i); ~String(); /* Access methods */ //array subscript char& operator[](int i); //get n'th char - a bit faster than [] char operator()(int i) const; //return pointer to string (ASCIIZ) operator char*(); //assignment String& operator=(const String& s); String& operator=(const char *s); /* Comparision operators */ static int compare(const String& s1, const String& s2); int operator==(const String& s2) const { return compare(*this,s2)==0; } int operator!=(const String& s2) const { return compare(*this,s2)!=0; } int operator<=(const String& s2) const { return compare(*this,s2)<=0; } int operator<(const String& s2) const { return compare(*this,s2)<0; } int operator>=(const String& s2) const { return compare(*this,s2)>=0; } int operator>(const String& s2) const { return compare(*this,s2)>0; } /* concatenation */ String& operator+=(char c); String& operator+=(const String& s); int length() const; int expandTo(int newlen,int keep=1); friend ostream& operator<<(ostream& o, const String& s); friend istream& operator>>(istream& o, String& s); }; inline int length(const String& s) { return s.length(); } #endif