Как повторить пару символов в строке >> 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, чтобы в следующей итерации пропустить только что добавленные символы.