Нужна помощь с созданием функции к коду 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;
}