Другие языки программирования и технологии

C++ полифил функции substr

Нужен полифил функции substr в языке c++
В C++ Это не функция, а метод класса std::basic_staring, который реализован в заголовочном файле <string> который принимает в качестве первого аргумента индекс начала подстроки, а в качестве второго – количество символов. Оба аргумента имеют целый неотрицательный тип и является необязательными. Если не передавать аргументов вообще, то метод возвращает копию строки. Если передать только один аргумент, то метод вернёт подстроку начиная с указанного индекса и до конца строки. Если значение индекса будет равно или больше длины строки, метод вернёт пустую строку. Если значение второго аргумента превысит количество символов оставшихся в строке, метод вернёт подстроку от указанного первого индекса и до конца строки.

std::basic_staring – шаблон контейнера на тип char

В классе std::basic_staring реализован конструктор, который принимает на вход два итератора, первый из которых указывает на начальный символ источника, второй указывает на положение сразу за последним элементом в диапазоне источника.

В качестве источника выступает строка или контейнер типа char. Итераторы на строку получают функциями begin и end, итераторы на контейнер данного типа имеют одноименные встроенные методы.

Код метода substr может выглядеть, например, так:

basic_string substr(size_type pos = 0, size_type count = npos) {
if (!pos && count == npos ) return basic_string(*this);
if (pos >= this->length()) return basic_string();
auto first = this->begin() + pos;
auto last = first + count + 1;
if (last > this->end()) last = this->end();
return basic_string(first, last);
}

где size_type – определённый в классе basic_string тип целого числа без знака, который может представлять число элементов и индексов в строке.
ась