From 293ecbbd357ee1960d557cb7543bf803df4154d6 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Tue, 5 Apr 2022 20:10:07 +0300 Subject: Add files via upload --- Sem. 07/MyString/MyString.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++ Sem. 07/MyString/MyString.h | 25 +++++++++++++++- Sem. 07/MyString/Source.cpp | 12 ++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 Sem. 07/MyString/MyString.cpp create mode 100644 Sem. 07/MyString/Source.cpp (limited to 'Sem. 07/MyString') diff --git a/Sem. 07/MyString/MyString.cpp b/Sem. 07/MyString/MyString.cpp new file mode 100644 index 0000000..909a378 --- /dev/null +++ b/Sem. 07/MyString/MyString.cpp @@ -0,0 +1,66 @@ +#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) +{ + 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; +} \ No newline at end of file diff --git a/Sem. 07/MyString/MyString.h b/Sem. 07/MyString/MyString.h index 61c6c5c..77b46fa 100644 --- a/Sem. 07/MyString/MyString.h +++ b/Sem. 07/MyString/MyString.h @@ -1 +1,24 @@ -nv +#pragma once + + +class MyString +{ + char* str; + size_t size; + + void copyFrom(const MyString& other); + void free(); +public: + MyString(); + MyString(const char*); + + MyString(const MyString&); + MyString& operator=(const MyString& other); + ~MyString(); + + size_t getSize() const; + void concat(const MyString& other); + + const char* c_str() const; +}; +//MyString name = "sdfsdf" \ No newline at end of file diff --git a/Sem. 07/MyString/Source.cpp b/Sem. 07/MyString/Source.cpp new file mode 100644 index 0000000..3dcc949 --- /dev/null +++ b/Sem. 07/MyString/Source.cpp @@ -0,0 +1,12 @@ +#include +#include +#include "MyString.h" +using namespace std; + +int main() +{ + MyString t("fsdfsd"); + + std::cout << t.c_str() << std::endl; + +} \ No newline at end of file -- cgit v1.3.1-23-gd82d