Как повторить пару символов в строке >> C++?

у меня есть строка ">>fg>>h>123>>. как мне в этой строке продублировать символ ">>", то есть получить строку такого вида >>>>fg>>>>h>123>>>>


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

Автор решения: Mikhailo
string dbl(const string& s) {
    string r;

    for (int i = 0; i < s.size(); ++i) {
        if (s[i] == '>' && s[i + 1] == '>') {
            r += ">>>>";
            i++;
            }
        else r += s[i];
        }

    return r;
    }

int main() {
    cout << dbl(">>fg>>h>123>>");
    }

Читаем по одному символу и смотрим на следующий.

→ Ссылка
Автор решения: isnullxbh

Код:

#include <string>
#include <iostream>

using namespace std::string_literals;

auto main() -> int
{
    auto in = ">>fg>>h>123>>"s;

    std::string::size_type pos = 0;
    while ((pos = in.find(">>", pos)) != std::string::npos)
        in.replace(pos, 2, ">>>>"), pos += 4;

    std::cout << "in': " << in << std::endl;

    return 0;
}

Пояснения: in - исходня строка; в цикле делаем поиск подстроки ">>" - если таковая найдена, заменяем ее на ">>>>" и увеличиваем pos на 4, чтобы в следующей итерации пропустить только что добавленные символы.

→ Ссылка