//word.h
#ifndef Word_h
#define Word_h
#include <iostream.h>
#include <stdlib.h>
class Word {
public:
Word();
Word(const char* s);
Word(char c);
Word(const Word& s);
Word(int);
~Word();
int length() const;
const char* chars() const;
char charAt(int) const;
char& operator[](int) const;
void setCharAt(int, char);
Word subString(int, int) const;
Word& operator = (const char*);
Word& operator = (char);
Word& operator = (const Word&);
Word operator + (const char*) const ;
Word operator + (char) const ;
Word operator + (const Word&) const ;
Word operator + (int) const;
int compare(const Word&) const;
bool operator == (const Word&) const;
bool operator != (const Word&) const;
bool startsWith(const Word& s) const;
bool endsWith(const Word& s) const;
bool contains(const Word& s) const;
void upcase();
void downcase();
private:
char* _chars;
char* strdup(const char*);
};
inline ostream& operator << (ostream& os, const Word& s) {
os << s.chars();
return(os);
}
inline istream& operator >> (istream& is, Word& s) {
char buf[1024];
is >> buf;
s = buf;
return(is);
}
inline char& Word::operator [] (int index) const {
if (index < 0 || index >= length()) {
cerr << "Index " << index << " is out of range in Word::operator[]\n";
exit(1);
}
return _chars[index];
}
#endif