#include "MyString.h" #include void MyString::copyFrom(const MyString& other) { str = new char[strlen(other.str) + 1]; strcpy(str, other.str); size = other.size; } void MyString::free() { delete[] str; } MyString::MyString() { str = new char[1]; str[0] = '\0'; size = 0; } MyString::MyString(const char* data) { if(data == nullptr) { str = new char[1]; str[0] = '\0'; size = 0; } else { size = strlen(data); str = new char[size + 1]; strcpy(str, data); } } MyString::MyString(const MyString& other) { copyFrom(other); } MyString& MyString::operator=(const MyString& other) { if (this != &other) { free(); copyFrom(other); } return *this; } MyString::~MyString() { free(); } size_t MyString::getSize() const { return size; } void MyString::concat(const MyString& other) { char* temp = new char[getSize() + other.getSize() + 1]; strcpy(temp, str); strcat(temp, other.str); delete[] str; str = temp; size = size + other.getSize(); } const char* MyString::c_str() const { return str; }