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

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

04.04.2012, 05:22. Показов 3567. Ответов 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);}
что надо исправить чтобы поиск и замена делались для всех слов
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2012, 05:22
Ответы с готовыми решениями:

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

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

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

5
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,299
04.04.2012, 05:32
Цикл организовывать.
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
04.04.2012, 05:52  [ТС]
kazak, как именно можно пример в коде
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 06:00
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  [ТС]
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
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2012, 12:10
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru