Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 10 / MyString
diff options
context:
space:
mode:
Commit47ae9ddb0c11b09bd28e199de1b3ea0dd53a0644 (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2022-05-03 19:53:06 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2022-05-03 19:53:06 +0300
Filesb980b0c65372391c6fda065b56f7a0ddb79fb30d /Sem. 10/MyString
Object-oriented_programming_FMI-47ae9ddb0c11b09bd28e199de1b3ea0dd53a0644.tar
Object-oriented_programming_FMI-47ae9ddb0c11b09bd28e199de1b3ea0dd53a0644.tar.gz
Object-oriented_programming_FMI-47ae9ddb0c11b09bd28e199de1b3ea0dd53a0644.zip
Parenta29fb60870cc65fba5bbb6cbeec86fe9415afc4d (diff)
changed folders
2 files changed, 0 insertions, 179 deletions
-rw-r--r--Sem. 10/MyString/MyString.cpp138
-rw-r--r--Sem. 10/MyString/MyString.h41
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
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 <fstream>
-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);