C поиск подстроки в строке string

C поиск подстроки в строке string

Поиск подстроки в строке стандартными средствами C#

Еще один способ, предложенный в комментариях пользователем “Прохожий Ник”.

классная переменная string a = “iamstupidproger”;

спасибо. именно то, что я искал. не зря первое место в выдаче.

Класс, спасибо. как просто оказалось))

bool result = @”some string”.Contains(“str”);

Как можно найти подстроку введенной строки в С++? Например, я ввел строку: "Hello World", потом ввожу "llo" и если во введенной строке первой есть такая подстрока, то пусть выведет true . Вот такое что-то нужно создать, но не знаю, как давать поиск в строке на совпадение.

2 ответа 2

Возвращает указатель на первое вхождение строки поиска в строке.

Защищён участником user31688 5 июн ’15 в 8:16 .

Благодарим вас за интерес, проявленный к этому вопросу. Так как он собрал большое количество ответов низкого качества и спама, который пришлось удалить, для публикации ответов теперь необходимо иметь 10 баллов репутации на сайте (бонус за ассоциацию учётных записей не учитывается).

Может быть, вы захотите ответить на один из неотвеченных вопросов?

Сейчас мы разберём на примерах, как может выглядеть алгоритм поиска подстроки в строке. Примеры будут основываться на функциях стандартных библиотек, ведь именно в таких функциях и проявляются все удобства написания программ. А вот классический разбор алгоритма, основанный на циклах и сравнениях, также достаточно примечателен. Поэтому мы его рассмотрим в этом же уроке.

Сам алгоритм в принципе очень прост. Есть две строки. Например "Hello world" и "lo"

Работать будем в два цикла:

  1. Первый будет выполнять проход по всей строке, и искать местоположение первой буквы искомой строки ( "lo" ).
  2. Второй, начиная с найденной позиции первой буквы – сверять, какие буквы стоят после неё и сколько из них подряд совпадают.
Читайте также:  Error internet cannot connect

Проиллюстрируем поиск подстроки в строке:

На первых двух итерациях цикла сравниваемые буквы не будут совпадать (выделено красным). На третьей итерации искомая буква (первый символ искомого слова) совпала с символом в строке, где происходит поиск. При таком совпадении в работу включается второй цикл.

Он призван отсчитывать количество символов после первого в искомой строке, которые будут совпадать с символами в строке исходной. Если один из следующих символов не совпадает – цикл завершает свою работу. Нет смысла гонять цикл впустую, после первого несовпадения, так как уже понятно, что искомого тут нет.

На третьей итерации совпал только первый символ искомой строки, а вот второй уже не совпадает. Придется первому циклу продолжить работу. Четвертая итерация дает необходимые результаты – совпадают все символы искомой строки с частью исходной строки. А раз все символы совпали – подстрока найдена. Работу алгоритма можно закончить.

Посмотрим, как выглядит классический код поиска подстроки в строке в С++:

Ссылка на основную публикацию
Adblock detector