diff options
changed folders
1 files changed, 0 insertions, 138 deletions
| -rw-r--r-- | Sem. 10/MyString/MyString.cpp | 138 |
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 <cstring>
-#include <iostream>
-
-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 |
