Строки в Python

Язык Python предоставляет широкие возможности для работы со строками. В частности, методы split() и strip() позволяют осуществлять эффективный парсинг данных, метод join() — осуществлять конкатенацию произвольного числа строк через заданный разделитель; методы lower(), upper() и capitalize() — работать с регистрами, метод translate() — осуществлять перевод по заданной таблице-словарю.

А ещё строку можно умножать на число!

Вам предлагается расширить возможности класса std::string в C++. Разработайте класс str, обладающий не только методами std::string, но и некоторыми из следующих:

  1. (3) : Метод split(optional: str) -> std::vector<str> осуществляет разбиение строки по данному разделителю. Если разделитель не задан, то таковыми являются пробельные символы: сам whitespace и символ перевода строки «\n»,
    (+1) : возврата каретки «\r», табуляции «\t» вертикальной табуляции «\v» и form feed «\f».
    (+1) : Метод rsplit(optional: str) -> std::vector выполняет аналогичные операции, но справа налево.
  2. (2) : Метод strip(optional: str) -> str позволяет убрать переданные ему символы с обоих концов строки, иначе обрезаются пробельные (0 (+1 аналогично 1-му пункту)).
    (+1) : Аналогично устроены lstrip() и rstrip(), производящие аналогичные действия только с одной из сторон.
  3. (1) : Метод join(std::vector<str>) -> str, принимая вектор строк, осуществляет их конкатенацию, перемежая исходной.
  4. (1) : Методы lower() -> str, upper() -> str изменяют регистр всех символов строки на верхний и нижний соответственно.
    (1) : Метод capitalize() -> str переводит в верхний регистр первую букву в каждом слове.
  5. (2) : Метод translate(std::vector<std::pair<str, str>>) -> str.
  6. (1) : Оператор умножения на натуральное число operator*(unsigned N) -> str, осуществляющий конкатенацию строки с собой N раз.

(3) : Также попробуйте реализовать указанный функционал с помощью паттерна Декоратор (Decorator)