#include <cstddef> // size_t
#include <cstring> // strlen, strcpy
#include <stdio.h>
struct String {
size_t size;
char *str;
/* Реализуйте этот конструктор */
String(size_t n, char c)
{
this->str = new char[n + 1];
for (int i = 0; i < n; i++)
{
this->str[i] = c;
}
this->str[n] = '\0';
size = n;
}
/* Реализуйте этот конструктор */
String(const char *str = "")
{
size = strlen(str);
this->str = new char[size + 1];
strcpy(this->str, str);
}
~String()
{
printf("dtr p = %p s = %s\n", str, str);
delete[] str;
}
void append(String s)
{
char* tmp = new char[size + s.size + 1];
strcpy(tmp, str);
strcpy(tmp + size, s.str);
size += s.size;
printf("app %p\n", str);
//delete [] str;
str = tmp;
}
};
int main()
{
char cs[20] = "fjsklds";
String s1(cs);
printf("%s\n", s1.str);
String s2(10, 'r');
printf("%s\n",s2.str);
s2.append(s1);
printf("%s\n", s2.str);
}