Форум программистов, компьютерный форум CyberForum.ru

Как заменить все найденные слова в переменной string - C++

Восстановить пароль Регистрация
 
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
04.04.2012, 05:22     Как заменить все найденные слова в переменной string #1
Для поиска и замены в переменной string использую стандартные функции с++
find и replase

НО с помощью них я могу заменить только первое найденное слово, а если в переменной string есть еще нужные слова то они остаются не тронутыми

сейчас использую такой код для нахождения и замены
C++
1
2
3
4
5
6
    
string gde_iskat, sto_iskat, na_sto_menat;
 
int dlinna_sto_iskat=sto_iskat.length();
    int position_gde_naiden=gde_iskat.find(sto_iskat);
    if(position_gde_naiden!=-1){gde_iskat.replace(position_gde_naiden, dlinna_sto_iskat, na_sto_menat);}
что надо исправить чтобы поиск и замена делались для всех слов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 05:22     Как заменить все найденные слова в переменной string
Посмотрите здесь:

C++ заменить все повторяющиеся слова на S##, где ## - номер слова
Ввести строку и два слова, заменить все вхождения первого слова на второе C++
Как в переменной строкового типа заменить все вхождения одного символа на другой? C++
Удвоить все найденные вхождения строки в текст C++
C++ Класс String. Напечатать все слова, входящие в эту текстовую строку, имеющие такую же длину как и заданное слово
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.04.2012, 05:32     Как заменить все найденные слова в переменной string #2
Цикл организовывать.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
04.04.2012, 05:52  [ТС]     Как заменить все найденные слова в переменной string #3
kazak, как именно можно пример в коде
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 06:00     Как заменить все найденные слова в переменной string #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
int main(){
string text("There is tomat, tomat and tomat");
string change("apple");
size_t i = 0;
 
for (int j = 0;j <text.length() - 1;j++)
{
i=text.find("tomat");
if(i == j)
text.replace(i,change.length(),change);
 
}
cout << text;
}
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.04.2012, 00:00  [ТС]     Как заменить все найденные слова в переменной string #5
MrCold есть ошибки в коде, поэтому выложу свой вариант

вместо text.replace(i,change.length(),change); надо text.replace(i,dlinna_sto_iskat,change);


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string gde_iskat, sto_iskat, na_sto_menat;
 
int dlinna_sto_iskat=sto_iskat.length();
size_t i = 0;
int dlinna_gde_iskat=gde_iskat.length();
if(dlinna_gde_iskat<1){dlinna_gde_iskat=0;}
 
    for (int j = 0;j <dlinna_gde_iskat - 1;j++)
    {
        i=gde_iskat.find(sto_iskat);
        if(i == j)
            gde_iskat.replace(i,dlinna_sto_iskat,na_sto_menat);
 
    }
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
05.04.2012, 12:10     Как заменить все найденные слова в переменной string #6
Цитата Сообщение от nill Посмотреть сообщение
MrCold есть ошибки в коде
Точно....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;
     int main(){
     string text("There is strawberry, strawberry and strawberry.");
     string change("apple");
     string findword("strawberry");
     size_t i = 0;
 
for (size_t j = 0;j <text.length() - 1;j++)
{
      i=text.find(findword);
      if(i == j)
      text.replace(i,findword.length(),change);
}
cout << text;
return 0;
}
Yandex
Объявления
05.04.2012, 12:10     Как заменить все найденные слова в переменной string
Ответ Создать тему
Опции темы

Текущее время: 16:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru