Самодельные строки MyString

Во всех задачах нужно реализовать функции класса MyString и использовать их в main()

H: Нижний регистр

Дана строка, возможно, содержащая пробелы. Считайте эту строку и переведите все символы этой строки в нижний регистр. Решение оформите в виде функции void MyString::to_lower(),

Для перевода одного символа в нижний регистр напишите отдельную функцию.

Ввод Вывод
Hello, world!
hello, world!

I: Проверить строки на равенство

Даны две строки (возможно, с пробелами). Проверьте, равны ли они. Если строки равны, выведите слово YES, если строки не равны, выведите слово NO.

Решение оформите в виде функции bool MyString::operator == (MyString &s).

Ввод Вывод
Hi
HI
NO
Bye
Bye
YES

J: Конкатенация

Даны две строки, не содержащие пробелов. Выведите конкатенацию этих строк.

Решение оформите в виде функции MyString MyString::operator +(MyString& s),

Ввод Вывод
abcd
xyz
abcdxyz

K: Substr

Дана строка и параметры \(i\), \(k\). Напишите функцию, которая возвращает подстроку данной строки, начиная с символа с индексом \(i\) и длиной \(k\).

Решение оформите в виде функции MyString substr(int i, int k).

Если \(i<0\), или \(i\ge s.size()\) или \(k<0\), то функция должна возвращать пустую строку.

Если \(i+k\ge s.size()\), то возвращается строка длиной \(s.size() - i\), то есть до конца строки.

Ввод Вывод
abcdefghijk
2 4
cdef
abcdefghijk
6 10000
ghijk

L: Erase

Дана строка и параметры \(i\), \(k\). Напишите функцию, которая удаляет из данной строки подстроку начиная с символа с индексом \(i\) и длиной \(k\).

Решение оформите в виде функции void MyString::erase(int i, int k), которая модифицирует данную строку, не возвращая значения.

Если \(i<0\), или \(i\ge s.size()\) или \(k<0\), то функция не модифицирует исходную строку.

Если \(i+k\ge s.size()\), то удаляются все символы начиная с \(i\)-го до конца строки.

Программа не должна использовать дополнительные вспомогательные строки.

Ввод Вывод
abcdefghijk
2 4
abghijk
abcdefghijk
6 10000
abcdef

M: Insert

Дана строка \(s\), параметр \(i\), другая строка \(t\). Напишите функцию, которая вставляет в данную строку \(s\) начиная с индекса \(i\) строку \(t\).

Решение оформите в виде функции void MyString::insert(MyString &s, int i), которая модифицирует данную строку, не возвращая значения.

Если \(i<0\) или \(i\gt s.size()\), функция не модифицирует исходную строку.

Ввод Вывод
abcde
2
xyz
abxyzcde

Q: Значение выражения - 1

Дана строка, состоящая из n цифр, между которыми стоит n-1 знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.

Решение оформите в виде функции int MyString::evaluate().

Ввод Вывод
1+2-3
0

R: StrToInt

Дана строка, содержащее запись в виде символов целого числа от 0 до 109-1. Определите значение этого числа в виде переменной int. Решение задачи оформите в виде функции int MyString::to_int().

Ввод Вывод
179
179

S: IntToStr

Дана целое число от -109+1 до 109-1. Запишите это число в строку, то есть выполните преобразование, обратное предыдущей задаче (но только допускаются отрицательные числа).

Решение задачи оформите в виде конструктора MyString::MyString(int n).

Ввод Вывод
-179
-179