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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

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

04.04.2012, 05:22. Просмотров 853. Ответов 5
Метки нет (Все метки)

Для поиска и замены в переменной 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++):

Как в переменной строкового типа заменить все вхождения одного символа на другой? - C++
Подскажите как в переменной строкового типа заменить все вхождения одного символа на другой. Очень обрадуюсь ссылке или примеру кода...

Класс String. Напечатать все слова, входящие в эту текстовую строку, имеющие такую же длину как и заданное слово - C++
Даны текстовая строка и слово. Напечатать все слова, входящие в эту текстовую строку, имеющие такую же длину как и заданное слово. Не...

Ввести строку и два слова, заменить все вхождения первого слова на второе - C++
Возможно ли создание такой программы: Ввести строку и два слова, заменить все вхождения первого слова на второе.

Заменить все повторяющиеся слова на S##, где ## - номер слова - C++
Ребят, помогите плз с лабой, а то я ее уже 4 раз переписываю =( Вечно я ее сначала пишу, а потом она все усложняется усложняется и я...

В файле заменить все слова максимальной длины на слова минимальной длины - C++
Нужно в считанном из файла тексте заменить все слова максимальной длины на слова минимальной длины, а результат записать в новый файл....

В строке все запятые заменить точкой, и перед первым словом вставить слово STRING - C++
Помогите написать программу, реализовать которую нужно при помощи system.string В строке все запятые заменить точкой, и перед первым...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
04.04.2012, 05:32 #2
Цикл организовывать.
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
04.04.2012, 05:52  [ТС] #3
kazak, как именно можно пример в коде
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 06:00 #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
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.04.2012, 00:00  [ТС] #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
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
05.04.2012, 12:10 #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 12:10
Привет! Вот еще темы с ответами:

Заменить все вхождения одного слова на другое - C++
Задание: считать из файла строки, заменить все вхождения одного слова на другое. В консоль: input, output, hello, bay. - заменить в файле...

Заменить все вхождения первого слова на второе - C++
Непонятная ошибка в коде Всем привет! Нам задали написать программу на С++, которая должна заменять все вхождения первого слова на...

Заменить в данном тексте все слова «процент» символом «%» - C++
Заменить в данном тексте все слова «процент» символом «%». Не могу понять как заменить. Добавлено через 40 минут Мне просто...

Удвоить все найденные вхождения строки в текст - C++
c++ visual Задание: дан текст и строка. удвойте все найденные вхождения строки. насколько я понимаю, если ввести текст &quot;мама мыла раму&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 12:10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru