From 47ae9ddb0c11b09bd28e199de1b3ea0dd53a0644 Mon Sep 17 00:00:00 2001 From: angeld55 Date: Tue, 3 May 2022 19:53:06 +0300 Subject: changed folders --- Sem. 10/MyString/MyString.cpp | 138 ------------------------------------------ 1 file changed, 138 deletions(-) delete mode 100644 Sem. 10/MyString/MyString.cpp (limited to 'Sem. 10/MyString/MyString.cpp') diff --git a/Sem. 10/MyString/MyString.cpp b/Sem. 10/MyString/MyString.cpp deleted file mode 100644 index 1bceef5..0000000 --- a/Sem. 10/MyString/MyString.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "MyString.h" -#include -#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) -{ - size = strlen(data); - str = new char[size + 1]; - strcpy(str, data); -} - -MyString::MyString(const MyString& other) -{ - copyFrom(other); -} -MyString& MyString::operator=(const MyString& other) -{ - std::cout << "op=" << std::endl; - - 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; -} - -MyString& MyString::operator+=(const MyString& other) -{ - concat(other); - return *this; -} - -MyString operator+(const MyString& lhs, const MyString& rhs) -{ - MyString copyOfLeft(lhs); - copyOfLeft += rhs; - return copyOfLeft; -} - -std::ostream& operator<<(std::ostream& stream, const MyString& str) -{ - stream << str.str; - return stream; -} - -std::istream& operator>>(std::istream& stream, MyString& str) -{ - delete[] str.str; - char buff[1024]; - stream >> buff; - - str.size = strlen(buff); - str.str = new char[str.size + 1]; - strcpy(str.str, buff); - - return stream; -} - -bool operator==(const MyString& lhs, const MyString& rhs) -{ - return strcmp(lhs.c_str(), rhs.c_str()) == 0; -} -bool operator<=(const MyString& lhs, const MyString& rhs) -{ - return strcmp(lhs.c_str(), rhs.c_str()) <= 0; - -} -bool operator<(const MyString& lhs, const MyString& rhs) -{ - return strcmp(lhs.c_str(), rhs.c_str()) < 0; - -} - -MyString::MyString(MyString&& otherString) -{ - str = otherString.str; - size = otherString.size; - otherString.str = nullptr; - std::cout << "move constr" << std::endl; -} - -MyString& MyString::operator=(MyString&& otherString) -{ - std::cout << "move op=" << std::endl; - - if (this != &otherString) - { - free(); - str = otherString.str; - otherString.str = nullptr; - size = otherString.size; - } - return *this; -} \ No newline at end of file -- cgit v1.3.1-23-gd82d