#ifndef STRING215_H_INCLUDED
#define STRING215_H_INCLUDED
class string215
{
public:
// Create a string215 of length zero (null terminator only).
string215();
// Create a string215 that is a (deep) copy of another.
string215(const string215 &other);
// Destroy a string215 and de-allocate its memory.
~string215();
// Return the length of a string215, not counting the null terminator.
int length() const;
// Return the character at a given index. Returns '\0' if the
// index is out of bounds.
char getchar(int index) const;
// Set the character at a given index and return false.
bool setchar(int index, char newchar);
// Check whether two strings contain the same characters.
bool equals(const string215 &other) const;
// Add a suffix to the end of this string. Allocates and frees memory.
void append(const string215 &suffix);
// Return a pointer to the raw character data (not a copy).
const char *c_str() const;
// Replace the contents of this string215 with a copy of a C
// string. Allocates and frees memory.
void replace(const char *in_str);
// Create a string215 that is a (deep) copy of a C string.
string215(const char *in_str);
// Return the length of a string
int str_len(const char *str) const;
// Return true if the two C strings contain the same sequence of characters.
bool equal_string(const char *first, const char *second) const;
// Make and return a dynamically-allocated copy of the input C string.
char *copy_string(const char *input);
private:
// Pointer to a null-terminated character array storing this
// object's content.
char *data;
};
#endif