/**************************************************************** FILE: MyString.cpp AUTHOR: Justin R. Smith LOGON ID: Z136340 DUE DATE: 7/13/2009 PURPOSE: Contains method implications for the MyString class. ****************************************************************/ #include "MyString.h" #include #include #include using namespace std; MyString::MyString() { stringStorage = 0; stringSize = NULL; } MyString::MyString(const char* s) { size_t stringSize = strlen(s); stringStorage = new char[stringSize+1]; // for(int i = 0; stringSize > stringStorage; i++) // char[stringSize+1] = s; } MyString::MyString(const MyString& oldMyString) { stringStorage = new char[oldMyString.stringSize]; for(int i = 0; i < oldMyString.stringSize; i++) stringStorage[i] = oldMyString.stringStorage[i]; stringSize = oldMyString.stringSize; } MyString::~MyString() { delete[] stringStorage; } const MyString& MyString::operator=(const MyString& rightOp) { if(this != &rightOp) { delete[] stringStorage; stringStorage = new char[rightOp.stringSize]; for(int i = 0; i < rightOp.stringSize; i++) stringStorage[i] = rightOp.stringStorage[i]; stringSize = rightOp.stringSize; } return *this; } const MyString& MyString::operator=(const char* rightOp) { int i = 0; if (NULL != stringStorage) { delete[] stringStorage; } stringSize = strlen( rightOp ); stringStorage = new char[ stringSize + 1 ]; for( i = 0; i < stringSize; i++) stringStorage[i] = rightOp[i]; stringStorage[i] = 0; return *this; } ostream& operator<<(ostream& osObject, const MyString& rightOp) { int i; for (i = 0; i < rightOp.stringStorage[i]; i++); cout << rightOp.stringStorage[i]; return osObject; } int MyString::size() const { return stringSize; } MyString MyString::operator+(const MyString& rightOp) const { strcat(this->stringStorage, rightOp.stringStorage); return *this; } MyString MyString::operator+(const char* rightOp) const { strcat(this->stringStorage, rightOp); return *this; } MyString operator+(const char* leftOp, const MyString& rightOp) { MyString result; result.stringSize = strlen(leftOp) + rightOp.stringSize; new char[result.stringSize]; return result; } char MyString::operator[](int ndx) const { return stringStorage[ndx]; } char MyString::operator[](int ndx) { return stringStorage[ndx]; } bool MyString::operator==(const MyString& rightOp) const { if(strcmp(stringStorage, rightOp.stringStorage) == 0 && strlen(stringStorage) == strlen(rightOp.stringStorage)) return true; else return false; }