Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Only 11.15!! Please help me. Thanks very much!! (Implementing the string class)

ID: 3827053 • Letter: O

Question

Only 11.15!! Please help me. Thanks very much!! (Implementing the string class) The string class is provided in the C++ library. Provide your own implementation for the following functions (name the new class My String): My String (const char ch, int size); MyString(const char chars[], int size); My String append(const MyString& s); My String append(const MyString& s, int index, int n); My String append(int n, char ch); My String assign(const char* chars); My String assign(const MyString& s, int index, int n); My String assign(const MyString& s, int n); My String assign(int n, char ch); My String substr(int index, int n) const; My String substr(int index) const; My String erase(int index, int n);

Explanation / Answer

PROGRAM CODE:

#include <iostream>
using namespace std;

class MyString
{
  
   public:
   char *buffer;
   int len;
   MyString(const char ch, int size)
   {
       len = size;
       buffer[0] = ch;
       buffer[1] = '';
   }
   MyString(const char chars[], int size)
   {
       len = size;
       buffer = new char[len];
       for(int i=0; i<len; i++)
       {
           buffer[i] = chars[i];
       }
       buffer[len] = '';
   }
   MyString append(const MyString &s)
   {
      
       int newLen = len + s.len;
       int j=0;
       char newBuff[newLen];
       for(int i=len; i<newLen; i++)
       {
           buffer[i] = s.buffer[j];
           j++;  
       }
       newBuff[newLen] = '';
       len = newLen;
       return *this;
   }
  
   MyString append(const MyString &s, int index, int n)
   {
       int j=0;
       for(int i=index; i<index+n; i++)
       {
           buffer[i] = s.buffer[j];
           j++;
           len++;
       }
       buffer[len] = '';
       return *this;
   }
   MyString append(int n, char ch)
   {
       for(int i=0; i<n; i++)
       {
           buffer[len++] = ch;
       }
       return *this;
   }
   MyString assign(const char *chars)
   {
       len = strlen(chars);
       buffer = new char[len];
       for(int i=0; i<len; i++)
       {
           buffer[i] = chars[i];
       }
       return *this;
   }
   MyString assign(const MyString &s, int index, int n)
   {
       len = 0;
       buffer = new char[n];
       for(int i=index; i<index+n; i++)
       {
           buffer[len++] = s.buffer[i];
       }
       buffer[len] = '';
       return *this;
   }
   MyString assign(const MyString &s, int n)
   {
       len = 0;
       buffer = new char[n];
       for(int i=0; i<n; i++)
       {
           buffer[len++] = s.buffer[i];
       }
       buffer[len] = '';
       return *this;
   }
   MyString assign(int n, char ch)
   {
       len = 0;
       buffer = new char[n];
       for(int i=0; i<n; i++)
       {
           buffer[len++] = ch;
       }
       buffer[len] = '';
       return *this;
   }
   MyString substr(int index, int n) const
   {
       char chars[n];
       int length = 0;
       for(int i=index; i<index+n; i++)
       {
           chars[length++] = buffer[index];
       }
       MyString str(chars, length);
       return str;
   }
  
   MyString substr(int index) const
   {
       return substr(index, len-index);
   }
   MyString erase(int index, int n)
   {
       if(index+n<=len)
       {
           buffer[index] = '';
       }
       else
       {
           int counter = 0;
           for(int i=index; i<len && i<n && (n+counter)<len; i++)
           {
               buffer[index] = buffer[n+counter];
               counter++;
           }
       }
       return *this;
   }
};
int main() {
   char string[] = "Hello";
   char string2[] = "World";
   char string3[] = " World";
   MyString str1(string, 5);
   cout<<str1.buffer<<endl;
   MyString str2(string2,5 );
   MyString str3 = str1.append(str2);
   cout<<str3.buffer<<endl;
   MyString str4(string3, 6);
   MyString str5 = str3.append(str4, 5, 6);
   cout<<str5.buffer<<endl;
   return 0;
}