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 ------------------------------------------ Sem. 10/MyString/MyString.h | 41 ------------- 2 files changed, 179 deletions(-) delete mode 100644 Sem. 10/MyString/MyString.cpp delete mode 100644 Sem. 10/MyString/MyString.h (limited to 'Sem. 10/MyString') 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 diff --git a/Sem. 10/MyString/MyString.h b/Sem. 10/MyString/MyString.h deleted file mode 100644 index 9e54287..0000000 --- a/Sem. 10/MyString/MyString.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include -class MyString -{ - char* str; - size_t size; - - void copyFrom(const MyString& other); - void free(); - -public: - MyString(); - MyString(const char*); - - MyString(const MyString&); - - MyString(MyString&&); //move constructor that accepts rvalue; - - MyString& operator=(const MyString& other); - MyString& operator=(MyString&& other); //move op= that accepts rvalue; - - ~MyString(); - - size_t getSize() const; - void concat(const MyString& other); - - const char* c_str() const; - - MyString& operator+=(const MyString& other); - - friend std::ostream& operator<<(std::ostream& stream, const MyString& str); - friend std::istream& operator>>(std::istream& stream, MyString& str); - -}; - -MyString operator+(const MyString& lhs, const MyString& rhs); - -bool operator==(const MyString& lhs, const MyString& rhs); -bool operator<=(const MyString& lhs, const MyString& rhs); -bool operator<(const MyString& lhs, const MyString& rhs); -- cgit v1.3.1-23-gd82d