From 58a0aded601479d7d1ba8a256e500e95f2bcb5bc Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sat, 7 May 2022 10:52:40 +0300 Subject: Autocommit at 07.05.2022 @ 10:52 --- src/Generic/String/String.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/Generic/String/String.cpp') diff --git a/src/Generic/String/String.cpp b/src/Generic/String/String.cpp index 570a2c6..99c2e0c 100644 --- a/src/Generic/String/String.cpp +++ b/src/Generic/String/String.cpp @@ -3,6 +3,14 @@ /* Private */ +void String::resize() { + length *= 2; + char* newStr = new char[length]; + strncpy(newStr, str, count); + delete[] str; + str = newStr; +} + void String::free() { delete[] str; } @@ -17,9 +25,9 @@ void String::copyFrom(const String& other) { /* Public */ String::String(const char* str) { - count = length = strlen(str) + 1; // capture terminating zero - this->str = new char[length]; - strncpy(this->str, str, count); + count = length = strlen(str); + this->str = new char[length + 1]; // capture terminating zero + strncpy(this->str, str, count + 1); } const char* String::get_cstr() const { @@ -39,7 +47,10 @@ String& String::operator+=(const String& other) { } String& String::operator+=(char other) { - if () + if (count == length) resize(); + + str[count++] = other; + return *this; } String::String() : String("") {} -- cgit v1.3.1-23-gd82d