Вводятся две строки, необходимо в первой строке найти вторую и заключить ее в скобки. "s3.insert(1,s2)" без этой команды программа работает, с этой командой программа зависает. Подскажите в чем проблема.
Если нужно найти все вхождения строки s2 в s1, то цикл здесь нужен.
Проблема в том, что следующее вхождение нужно искать не с начала строки, как вы это делали здесь:
#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Ответ
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());
}
суббота, 23 марта 2019 г.
Функции insert()
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий