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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.