Страницы

Поиск по вопросам

суббота, 23 марта 2019 г.

Функции insert()

Вводятся две строки, необходимо в первой строке найти вторую и заключить ее в скобки. "s3.insert(1,s2)" без этой команды программа работает, с этой командой программа зависает. Подскажите в чем проблема.
#include #include #include #include
using namespace std;
int main(){ setlocale(LC_ALL,""); string s1,s2,s3; cout<<"Введите первую строку: "; cin>>s1; cout<<"Введите вторую строку: "; cin>>s2; s3="()"; s3.insert(1,s2);
int size = s2.size();
int x = s1.find (s2); while (x cout<

Ответ

Если нужно найти все вхождения строки s2 в s1, то цикл здесь нужен. Проблема в том, что следующее вхождение нужно искать не с начала строки, как вы это делали здесь:
x = s1.find (s2);
а с определённого индекса, то есть (предыдущий x + длина найденной строки)
x = s1.find(s2, x + s3.size());
Итого:
int x = s1.find(s2); while (x != string::npos) { s1.replace(x, size, s3); x = s1.find(s2, x + s3.size()); }

Комментариев нет:

Отправить комментарий