Нужна помощь с созданием функции к коду C++

Нужна помощь с функцией, которая принимает не изменяющийся начальный и конечный итератор текстовой строки и изменяет начальный итератор другого фрагмента. Функция переписывает содержимое первого слайса во второй, вставляя один пробел между каждой цифрой и рядом с ней не цифровым символом. Функция возвращает модифицирующий итератор следующего символа после последнего введенного. Функция может юзать только cctype и string header. Суть в том что функция должна работать(быть адаптированная) в этой программе:

int main() {
std::string in = "peppermint1001bubbles balloon gum", out(100, '*');
auto e = function(in.cbegin(), in.cend(), out.begin());
int n = e - out.begin();
std::string s = out.substr(0, n);
bool b = (s == "peppermint 1001 bubbles balloon gum");
std::cout << std::boolalpha << b << std::endl; }

Ответы (1 шт):

Автор решения: Harry

Так вас устроит?

string::iterator function(string::const_iterator b, string::const_iterator e, string::iterator out)
{
    for(auto n = b+1; n != e; ++b,++n)
    {
        *out++ = *b;
        if ((isalpha(*b) && isdigit(*n)) ||
            (isdigit(*b) && isalpha(*n))) *out++ = ' ';
    }
    *out++ = *b;
    return out;
}
→ Ссылка