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

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

Войти
Регистрация
Восстановить пароль
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

Как можно найти вхождение подстроки в строку без строковых функций? - C++

29.04.2013, 21:52. Просмотров 515. Ответов 5
Метки нет (Все метки)

Как можно найти вхождение подстроки в строку без строковых функций?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2013, 21:52     Как можно найти вхождение подстроки в строку без строковых функций?
Посмотрите здесь:

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

Найти последнее вхождение подстроки в строку - C++
Нужно нати последнее вхождение определенной подстроки в строку. Help!

Вхождение подстроки в строку - C++
Не правильно считает вхождение подстроки в строку,данные читаются из файлов. int _tmain() { SetConsoleCP(1251); ...

Вхождение подстроки в строку - C++
Написать функцию , котоpая находит пеpвую по поpядку позицию вхождения подстpоки в указанную пользователем стpоку , начи- ная с...

Найти первое вхождение подстроки и передать указатель - C++
Есть cимвoльная cтрока и подcтpока. Нужно найти пepвоe вхождение подстроки в строку и передать указатель на первый симвoл данного...

[C++] Установить можно ли, разбив строку на подстроки длиной N... - C++
Заданная строка с N2 цифр. Установить можно ли, разбив строку на подстроки длиной N, записать их в строки двумерного массива N x N по одной...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.04.2013, 22:23     Как можно найти вхождение подстроки в строку без строковых функций? #2
Тупо перебрать по всей длине строки, то есть, берете первый элемент, смотрите сходятся ли первые буквы подстроки и строки, если да, то сверяете след буквы, если нет, то аналогично сравниваете второй элемент строки с первой буквой подстроки.... и так до конца, только не вылезьте за пределы массива
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
29.04.2013, 22:38  [ТС]     Как можно найти вхождение подстроки в строку без строковых функций? #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
Тупо перебрать по всей длине строки
Это самый примитивный и очевидный вариант, так сказать атака в лоб Думал, может у кого есть идеи похитрее, но похоже так делать и придется

Добавлено через 3 минуты
Да и еще в плане "оптимизации" не самый лучший вариант, тут скорее всего будет произведено количество операции где-то в районе произведения количества элементов строки на кол-во элементов подстроки
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
29.04.2013, 22:39     Как можно найти вхождение подстроки в строку без строковых функций? #4
Wladius, почитайте как устроена функция поиска вхождения подстроки в строку. Думаю, она точно такая же примитивная.
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
29.04.2013, 22:42  [ТС]     Как можно найти вхождение подстроки в строку без строковых функций? #5
Цитата Сообщение от metaluga145 Посмотреть сообщение
Wladius, почитайте как устроена функция поиска вхождения подстроки в строку. Думаю, она точно такая же примитивная.
Действительно хорошая идея, нужно посмотреть.
Если кому-то интересно, то нашел разбор различных алгоритмов поиска http://habrahabr.ru/post/113266/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2013, 23:01     Как можно найти вхождение подстроки в строку без строковых функций?
Еще ссылки по теме:

Найти первое вхождение символов в строку - C++
В массиве строк , введенных пользователем , найти первые вхождения символов ' s ' и 'S' . Использовать функции strchr () tolower ( ) . ...

Найти первое вхождение в строку заданного ключевого слова - C++
1. Обеспечить ввод строки, затем определить ее длину, и определить в ней первое вхождение заданного ключевого слова, например, ‘from’,...

Ближайшее вхождение подстроки - C++
Здравствуйте, есть текст и переменная с позицией последнего клика на этом тексте, нужно найти 2 ближайших вхождения определённой...

Двумерные массивы. Можно ли, разбив строку на подстроки, записать их в строке двумерного массива N x N по одной цифре? - C++
Задана строка из N2 цифр. Установить можно ли, разбив строку на подстроки длинной N, записать их в строке двумерного массива N x N по одной...

Удалить из строки каждое вхождение подстроки - C++
Удалить из строки s каждое вхождение подстроки s1. На С++ Дублирование тем запрещено правилами форума (п. 3.4). Не плодите...

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


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

Или воспользуйтесь поиском по форуму:
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
29.04.2013, 23:01     Как можно найти вхождение подстроки в строку без строковых функций? #6
Можно еще с Boost нужный алгоритм поиска подобрать. К примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>
 
int main()
{
    std::string input = "Search the input using the given finder.";
    std::string seach = "in";
    std::vector<std::string> result;
    boost::find_all(result, input, seach);
    
    std::cout<<"result = ";
    for (const auto& i : result) std::cout<<i<<" ";
    std::cout<<"\nFounded "<<result.size()<<" matches.";
    std::cout<<"\n";
    
    return 0;
}
Yandex
Объявления
29.04.2013, 23:01     Как можно найти вхождение подстроки в строку без строковых функций?
Ответ Создать тему
Опции темы

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