Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit293ecbbd357ee1960d557cb7543bf803df4154d6 (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2022-04-05 20:10:07 +0300
Committer
 GitHub <noreply@github.com>
2022-04-05 20:10:07 +0300
Files9b6f6acbaeadcca388bfcaf88c2e7847d6b9b6ec
Object-oriented_programming_FMI-293ecbbd357ee1960d557cb7543bf803df4154d6.tar
Object-oriented_programming_FMI-293ecbbd357ee1960d557cb7543bf803df4154d6.tar.gz
Object-oriented_programming_FMI-293ecbbd357ee1960d557cb7543bf803df4154d6.zip
Parentc02c45e387ded267a10224f330ac77d4aa70b8f0 (diff)
Add files via upload
3 files changed, 102 insertions, 1 deletions
-rw-r--r--Sem. 07/MyString/MyString.cpp66
-rw-r--r--Sem. 07/MyString/MyString.h25
-rw-r--r--Sem. 07/MyString/Source.cpp12
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 <cstring>
+
+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 <iostream>
+#include <fstream>
+#include "MyString.h"
+using namespace std;
+
+int main()
+{
+ MyString t("fsdfsd");
+
+ std::cout << t.c_str() << std::endl;
+
+} \ No newline at end of file