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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 177
#1

Поиск подстроки в строке и замена её на другую строку - C++

19.07.2013, 13:55. Просмотров 1220. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста как мне поправить ошибку?
Написал такую функцию. Всё работает правильно (т.е. он правильно находит подстроку, считает длину нового массива)
НО:
В коде ниже есть мини ошибочка:
C++
1
if (isReplace_[i-j] = isMatch(lookingFor_, tmp))    ///блин ток тут переделать чтобы индекс норм считал
массив из bool isPeplace - вспомогательный. Нужен он для того чтобы когда я делаю новый массив ( смотрю по нему надо или нет вставлять другую строку (на которую нужно заменить подстроку))

Никакими стандартными функциями пользоваться нельзя, всё своими руками


А сам вопрос именно вот здесь:
C++
1
isReplace_[i-j]
- подскажите пожалуйста как подправить высчитывание индекса чтобы true (заменить) вставало на нужное место.

Пример:
исх: 00100
найти: 00
заменить на: 222
выходит: 2221222
Как должен выглядеть мой массив:
да нет нет нет да нет


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
void substituteStr()///////доделать
    {
        if (string)
        {
            char buf[512];
            cout << "Find: ";
            _flushall();
            gets_s(buf, 512);
 
            int lenght_ = strlen(buf);
 
            char* lookingFor_;
            lookingFor_ = new char[lenght_ + 1];
            for (int i = 0; i < strlen(buf); i++)
                lookingFor_[i] = buf[i];
 
            lookingFor_[lenght_] = '\0';
 
            cout << "Substitude to: ";
            _flushall();
            gets_s(buf, 512);
 
            lenght_ = strlen(buf);
 
            char* substituteTo_;
            substituteTo_ = new char[lenght_ + 1];
            for (int i = 0; i < lenght_; i++)
                substituteTo_[i] = buf[i];
 
            substituteTo_[lenght_] = '\0';
 
            char* tmp = new char[strlen(lookingFor_) + 1];
            tmp[strlen(lookingFor_)] = '\0';
 
            int hlp = 0;
            int otherLetters = 0;
 
            bool* isReplace_ = new bool[strlen(string)];
 
            for (int i = 0; i < strlen(string); i++)
                isReplace_[i] = false;
 
            int j = 0;
            for (int i = 0, j; i < strlen(string); j = 0)
            {
                for (j=0 ; j < strlen(lookingFor_); j++)
                {
                    tmp[j] = string[i];
                    i++;
                }
                if (isReplace_[i-j] = isMatch(lookingFor_, tmp))    ///блин ток тут переделать чтобы индекс норм считал
                    hlp++;
                else
                    otherLetters++, i++;
            }
            
            char* result = new char[otherLetters + (hlp*strlen(substituteTo_)) + 1];
            result[otherLetters + (hlp*strlen(substituteTo_))] = '\0';
 
            for (int i = 0; i < otherLetters + (hlp*strlen(substituteTo_)); i++)
            {
                if (isReplace_[i])
                {
                    for (int j = 0; j < strlen(substituteTo_); j++)
                    {
                        result[i] = substituteTo_[j];
                    }
                }
                else
                {
                    result[i] = string[i];
                }
            }
            recreateStr(result);
        }
        else cout << "String is empty!";
        cout << endl;
    }
Добавлено через 31 минуту
Киньте хотябы ссылку на статью с алгоритмом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 13:55     Поиск подстроки в строке и замена её на другую строку
Посмотрите здесь:

Функция: замена подстроки в строке на заданную строку - C++
Помогите пожалуйста с данной задачей: Реализовать на языке C функцию замены подстроки в строке на заданную строку.

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. - C++
#include &lt;stdio.h&gt; int count_of_substrings(string s, string s1){ int start = 0; int count = 0; int pos = 0; ...

Замена одной подстроки на другую - C++
Есть ли функция, которая может заменить все вхождения подстроки strl на подстроку strl2? Если нет, то как это возможно осуществить? ...

Замена подстроки в строке - C++
В строке нужно заменить подстроку aaa на 3(a). Помогите написать код без использования string.

Замена подстроки в строке - C++
Так как не нашел алгоритм стемминга для C++, то пришлось что-то придумывать самому. Так вот есть такой код int i; for(i = 0; i &lt;...

Замена подстроки в строке - C++
Дана строка. Заменить все подстроки “xz2” на запятые без подключения дополнительных библиотек. Написал такой код, но выводиться какой-то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 14:42     Поиск подстроки в строке и замена её на другую строку #2
C++
1
if (isReplace_[i-j] = isMatch(lookingFor_, tmp))
Тут должно быть два знака '=', т.е. ==
А вообще, старичок, локализуй свою проблему...
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 177
19.07.2013, 15:12  [ТС]     Поиск подстроки в строке и замена её на другую строку #3
lazybiz, ноуп. Здесь я как раз присваиваю значение bool своему массиву заменять не заменять.
Проблема только в индексе
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 15:22     Поиск подстроки в строке и замена её на другую строку #4
PakistanCode, согласен, не досмотрел...
Тогда:
* локализуй проблему по-максимому
* будь добр, скажи что делает функция isMatch
* и последнее, самое главное: "подскажите пожалуйста как подправить высчитывание индекса чтобы true (заменить) вставало на нужное место." - никому ни о чем не говорит.
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 177
19.07.2013, 15:32  [ТС]     Поиск подстроки в строке и замена её на другую строку #5
lazybiz, в общем я не знаю как объяснить ;( буду всё заново переписывать
найти бы просто метод попроще
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 05:59     Поиск подстроки в строке и замена её на другую строку
Еще ссылки по теме:

Замена подстроки в строке - C++
здесь у меня такая проблема возникла мне нужно заменить все &quot;were&quot; на &quot;are&quot; но &quot;are&quot; меньше на 1 символ я незнаю как его можно заменить...

Замена подстроки в строке (с пробелами) - C++
вопрос: ввожу все строки и подстроки через gets, но когда начинается замена, пробелы не видит и удаляет по одному символу до пробела? как...

Заменить в строке все вхождения одной подстроки на другую - C++
помогите пожалуйста с решением задачи! замените в строке все вхождения одной подстроки на другую в с++.

Заменить в строке последнее вхождение данной подстроки на другую подстроку - C++
Даны строки s,s1 и s2. Заменить в строке S последнее вхождение строки S1 на строку S2 через char

Поиск подстроки в строке - C++
Добрый день всем! Ребята помогите решить такую задачу. Мне нужно в строке char *text = &quot;Help me jax111mackey&quot; получить строку 111 в...

Поиск подстроки в строке - C++
Доброго времени суток! Столкнулся с такой задачей. Вводим 10 слов, далее вводим приставку (начало слова). В итоге программа должна показать...


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

Или воспользуйтесь поиском по форуму:
Kant
33 / 33 / 9
Регистрация: 15.05.2013
Сообщений: 236
20.07.2013, 05:59     Поиск подстроки в строке и замена её на другую строку #6
Вот куча алгоритмов, как это можно сделать http://www-igm.univ-mlv.fr/~lecroq/string/
Вот что дал поиск по киберфоруму Замена подстроки в строке
Yandex
Объявления
20.07.2013, 05:59     Поиск подстроки в строке и замена её на другую строку
Ответ Создать тему
Опции темы

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