Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.77
gera3323
2 / 2 / 0
Регистрация: 26.08.2010
Сообщений: 51
#1

Функция поиска подстроки в строке - C++

22.08.2012, 16:51. Просмотров 4522. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int CChar::strpos(char* sub, char* str)
{
  char* temp = new char[strlen(sub)+1];
  int t=0;
 
   for(int i=0; i<strlen(str); i++)
   {
     while(str[i]==sub[t])
       temp[t++] = str[i++];
 
      temp[t] = '\0';
 
       t=0;
     if(strcmp(temp,sub)==0) return i-strlen(sub);
   }
   return 0;
}
строки sub и str в нижнем регистре.

все ли правильно в этой функции? можно ли ее оптимизировать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2012, 16:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция поиска подстроки в строке (C++):

Функция поиска подстроки в строке. Как вернуть указатель? - C++
Подскажите пожалуйста как доделать функцию. Было дано задание изобрести свой костыль) Функцию, которая искала бы подстроку в строке и...

Строки(функция поиска подстроки) - C++
есть ли какая-то функция типо функции в delphi AnsiContainsStr, просто надо узнать содержит ли какая-то строка подстроку.

Алгоритмы поиска подстроки в строке - C++
Если не сложно, помогите пожалуйста и простенько объясните алгоритмы поиска последовательного прямого поиска, Рабина, Кнута-Морриса-Пратта...

Реализовать функцию поиска подстроки в строке - C++
Напишите метод revpositn, который получает два параметра str1 и str2 типа string и возвращает позицию начала первого появления в str1...

Алгоритм Бойера-Мура поиска подстроки в строке (Js -> C++) - C++
Помогите реализовать алгоритм для с ++ &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; &lt;title&gt;Практическое использование курсовой...

Изменить код алгоритма поиска подстроки в строке - C++
Нужно изменить данный код так, чтобы можно было добавлять цифры в алгоритм поиска. Помогите, пожалуйста. #include &quot;stdafx.h&quot; #include...

4
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
22.08.2012, 18:10 #2
Динамическая память выделяется:
Цитата Сообщение от gera3323 Посмотреть сообщение
char* temp = new char[strlen(sub)+1];
А освобождения нет
C++
1
delete [] temp;
0
gera3323
2 / 2 / 0
Регистрация: 26.08.2010
Сообщений: 51
23.08.2012, 00:13  [ТС] #3
Цитата Сообщение от Intel~lect Посмотреть сообщение
Динамическая память выделяется:

А освобождения нет
C++
1
delete [] temp;

освобождение памяти тут не надо, когда подпрограмма завершится память будет освобождена автоматически.

да и где тут оператор delete [] temp ставить ? перед ретурн, дак тогда, что возвращатся будет, если после он не выполниться
0
D-Vampire
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
23.08.2012, 00:41 #4
Цитата Сообщение от gera3323 Посмотреть сообщение
освобождение памяти тут не надо, когда подпрограмма завершится память будет освобождена автоматически.
Эт не c#, чтобы подбирать за программистом. Попробуйте использовать вашу функцию в цикле и проследите за размером подтребляемой памяти в диспетчере задач.
0
alsav22
5435 / 4830 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 02:52 #5
Цитата Сообщение от gera3323 Посмотреть сообщение
да и где тут оператор delete [] temp ставить ? перед ретурн, дак тогда, что возвращатся будет, если после он не выполниться
Именно перед return. И почему это он не выполнится, если перед ним delete [] temp сделать?

Добавлено через 6 минут
Цитата Сообщение от gera3323 Посмотреть сообщение
когда подпрограмма завершится память будет освобождена автоматически.
Память, выделяемая с помощью new, сохраняется до окончания работы всей программы.
0
23.08.2012, 02:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 02:52
Привет! Вот еще темы с ответами:

Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула. - C++
Функция получает ссылки на две переменные: haystack и needle строкового типа. В haystack должна содержаться строка, в которой будет...

Функция находящее в строке заданное вхождение подстроки - C++
Описать функцию PosK(S0, S, K) целого типа, возвращающую номер позиции, начиная с которой в строке S содержится K-е вхождение подстроки S0...

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

Функция поиска строки в строке - C++
Здравствуйте! Не могли бы вы посмотреть в чем я накосячил в коде ? Не могу понять... Задача: Напишите функцию поиска первого вхождения...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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