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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
vipusknik
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 54
#1

Заменить все вхождения строки s2 в строку s1 на строку s3 - C++

17.10.2012, 20:02. Просмотров 1712. Ответов 23
Метки нет (Все метки)

Дано три строки s1, s2, s3. Заменить в строке s1 все вхождения s2 на s3.

Помогите. Не знаю как сделать.
Вообще мыслей никаких(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 20:02     Заменить все вхождения строки s2 в строку s1 на строку s3
Посмотрите здесь:
C++ Преобразовать строку: все вхождения abc заменить на def
Заменить в строке все вхождения abc на def и напечатать полученную строку C++
C++ Ввести строку и слово, удалить все вхождения слова и вывести строку
C++ Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
Ввести строку текста и строку поиска, найти местоположение первого вхождения строки поиска в строку текста C++
Ввести строку и два слова, заменить все вхождения первого слова на второе C++
C++ Заменить все символы "*" числом, совпадающим с порядковым номером вхождения данного символа в строку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.10.2012, 23:31     Заменить все вхождения строки s2 в строку s1 на строку s3 #21
Цитата Сообщение от David Sylva Посмотреть сообщение
go покажи как, до меня никак не доходит.
ну я предложил ответ на вопрос
Цитата Сообщение от vipusknik Посмотреть сообщение
например, s3 < s2.
В идеале может быть и больше. Поэтому так.
Я бы сделал так функцию insert
Проверяйте, может ошибся, время то уже позднее
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char* insert(char *src, char *s, char *dst)
{
   char *t = strdup(src + strlen(s));
   strcpy(src, dst);
   strcat(src, t);
   free(t);
   return src;
}
 
int main(void)
{
   char s[BUFSIZ] = "__Hello world";
   char *s1 = "Hi";
   char *s2 = "Hello";
   char *ptr = strchr(s, 'H');
 
   printf("%s\n", insert(ptr, s2, s1));
   printf("%s\n", insert(ptr, s1, s2));
   printf("%s\n", insert(ptr, s2, s2));
   printf("%s\n", s);
 
   return 0;
}
http://ideone.com/Ck8SO

Добавлено через 37 секунд
Bash
1
2
3
4
Hi world
Hello world
Hello world
__Hello world
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.10.2012, 09:08     Заменить все вхождения строки s2 в строку s1 на строку s3 #22
go отличный вариант, но по моему он не работает если несколько вхождений слова.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.10.2012, 10:51     Заменить все вхождения строки s2 в строку s1 на строку s3 #23
Цитата Сообщение от David Sylva Посмотреть сообщение
но по моему он не работает если несколько вхождений слова.
В смысле?
Вот протестил

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char* insert(char *src, char *s, char *dst)
{
   char *t = strdup(src + strlen(s));
   strcpy(src, dst);
   strcat(src, t);
   free(t);
   return src;
}
 
int main(void)
{
   char s[BUFSIZ] = "Hello, world, Hello";
   char *s1 = "Hi";
   char *s2 = "Hello";
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s1);
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s1); ptr; ptr = strstr(ptr + 1, s1))
      insert(ptr, s1, s2);
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s2);
 
   printf("%s\n", s);
 
   return 0;
}
http://ideone.com/sqrul
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 11:20     Заменить все вхождения строки s2 в строку s1 на строку s3
Еще ссылки по теме:
Найти все вхождения в строку последовательности символов "сто" и заменить на "100" C++
C++ Заменить в строке символ 'q' на номер вхождения в строку в обратном порядке
C++ Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы этой строки числом 0
В строке заменить каждый символ * числом, соответствующим номеру вхождения этого символа в строку C++
C++ Функция поиска вхождения строки в заданную строку в С

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

Или воспользуйтесь поиском по форуму:
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.10.2012, 11:20     Заменить все вхождения строки s2 в строку s1 на строку s3 #24
Да всё норм работает.

Не по теме:

Жаль автору темы твоя программа не пригодится

Yandex
Объявления
18.10.2012, 11:20     Заменить все вхождения строки s2 в строку s1 на строку s3
Ответ Создать тему
Опции темы

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