Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
1

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

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

Author24 — интернет-сервис помощи студентам
Для поиска и замены в переменной 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);}
что надо исправить чтобы поиск и замена делались для всех слов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 05:22
Ответы с готовыми решениями:

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

Ошибка при присвоении argv[1] переменной string. Как конвертировать к типу string?
"call of an object of a class type without appropriate operator() or conversion functions to...

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

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

5
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
04.04.2012, 05:32 2
Цикл организовывать.
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
04.04.2012, 05:52  [ТС] 3
kazak, как именно можно пример в коде
0
873 / 771 / 173
Регистрация: 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;
}
1
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
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);
 
    }
0
873 / 771 / 173
Регистрация: 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;
}
1
05.04.2012, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 12:10
Помогаю со студенческими работами здесь

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

Bash: как заменить все найденные файлы с именем 1 в папках A,B,C на файл с именем 2?
Поиск и открытие в Geany всех файлов с именем 'blablabla.php' из папки и вложенных папок откуда я...

Записать в массив все найденные слова в тексте
Всем привет. У меня есть проект на котором стоит webBrowser1 Мне нужно на определенной странице...

Заменить все найденные в строке символы, недопустимые в имени файла, на пробелы
Добрый день. Подскажите, пожалуйста. Хочу сделать проверку на существование в строке символов,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru