#include <iostream>
using std::cout;
class MyString
{
public:
MyString();
MyString(const char *);
~MyString();
void Print()
{ cout << m_string << '\t' << m_length << '\n'; }
private:
char *m_string;
size_t m_length;
void Copy(const char *);
size_t StrLen(const char *);
};
MyString::MyString()
{
m_string = nullptr;
m_length = 0ull;
}
MyString::MyString(const char *string)
{
Copy(string);
}
MyString::~MyString()
{
if (m_string == nullptr)
return;
delete[] m_string;
}
size_t MyString::StrLen(const char *string)
{
size_t len = 0ull;
while (string[len] != '\0')
++len;
return len;
}
void MyString::Copy(const char *string)
{
m_length = StrLen(string);
m_string = new char[m_length + 1];
if (m_string == nullptr)
return;
for (size_t i = 0; i < m_length; ++i)
m_string[i] = string[i];
m_string[m_length] = '\0';
}
int main()
{
MyString a("hi");
a.Print();
return EXIT_SUCCESS;
}
void MyString::Copy(const char *string)
{
m_length = StrLen(string);
m_string = new char[m_length + 1];
if (m_string == nullptr)
return;
for (size_t i = 0; i < m_length; ++i)
m_string[i] = string[i];
m_string[m_length] = '\0';
}
MyString MyString::Copy(const char *string)
{
m_length = StrLen(string);
m_string = new char[m_length + 1];
if (m_string == nullptr)
return *this;
for (size_t i = 0; i < m_length; ++i)
m_string[i] = string[i];
m_string[m_length] = '\0';
return *this;
}