Поделиться через


strstr, , wcsstr_mbsstr_mbsstr_l

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

Внимание

Функции _mbsstr и _mbsstr_l не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

char *strstr(
   const char *str,
   const char *strSearch
); // C only
char *strstr(
   char *str,
   const char *strSearch
); // C++ only
const char *strstr(
   const char *str,
   const char *strSearch
); // C++ only
wchar_t *wcsstr(
   const wchar_t *str,
   const wchar_t *strSearch
); // C only
wchar_t *wcsstr(
   wchar_t *str,
   const wchar_t *strSearch
); // C++ only
const wchar_t *wcsstr(
   const wchar_t *str,
   const wchar_t *strSearch
); // C++ only
unsigned char *_mbsstr(
   const unsigned char *str,
   const unsigned char *strSearch
); // C only
unsigned char *_mbsstr(
   unsigned char *str,
   const unsigned char *strSearch
); // C++ only
const unsigned char *_mbsstr(
   const unsigned char *str,
   const unsigned char *strSearch
); // C++ only
unsigned char *_mbsstr_l(
   const unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C only
unsigned char *_mbsstr_l(
   unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C++ only
const unsigned char *_mbsstr_l(
   const unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C++ only

Параметры

str
Строка для поиска, завершающаяся символом NULL.

strSearch
Искомая строка, завершающаяся символом NULL.

locale
Используемый языковой стандарт.

Возвращаемое значение

Возвращает указатель на первое вхождение strSearch strSearch NULL strили не отображается.str Если strSearch указывает на строку нулевой длины, функция возвращает str.

Замечания

Функция strstr возвращает указатель на первое вхождение strSearch в str. Поиск не включает конечные символы NULL. wcsstr является версией strstr с расширенными символами, а _mbsstr — версией с многобайтовыми символами. Аргументы и возвращаемые значения wcsstr являются строками с широкими символами. Аргументы и возвращаемое значение _mbsstr являются многобайтовыми строками. Кроме того, функция _mbsstr проверяет свои параметры. Если str или strSearch есть NULL, вызывается недопустимый обработчик параметров, как описано в разделе проверки параметров. Если выполнение может быть продолжено, параметр _mbsstr принимает значение errno, а функция EINVAL возвращает значение 0. strstr и wcsstr не проверяйте их параметры. В остальном эти три функции ведут себя идентично.

Внимание

Эти функции могут создать угрозу в связи с проблемой переполнения буфера. Проблемы переполнения буфера могут использоваться для атаки на систему, поскольку они могут допустить выполнение произвольного кода, приводящего к несанкционированному повышению прав доступа. Дополнительные сведения см. в разделе "Избегание переполнения буфера".

В языке C эти функции принимают указатель const в качестве первого аргумента. В языке C++ доступны две перегрузки. Перегрузка, принимающая указатель на const, возвращает указатель на const; версия, которая принимает указатель на не const, возвращает указатель на не const. Макрос _CRT_CONST_CORRECT_OVERLOADS определяется, если доступны обе const версии этих функций и неconst являются. Если требуется поведение, отличноеconst от обоих перегрузки C++, определите символ _CONST_RETURN.

Выходное значение влияет на параметр LC_CTYPEкатегории языкового стандарта ; дополнительные сведения см. в разделе . _wsetlocalesetlocale Версии этих функций, у которых нет _l суффикса, используют текущий языковой стандарт для этого поведения, зависящее от языкового стандарта; версии, _l имеющие суффикс, идентичны, за исключением того, что вместо этого они используют переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

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

TCHAR.H рутина _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsstr strstr _mbsstr wcsstr
Недоступно Недоступно _mbsstr_l Недоступно

Требования

Маршрут Обязательный заголовок
strstr <string.h>
wcsstr <string.h> или <wchar.h>
_mbsstr, _mbsstr_l <mbstring.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_strstr.c

#include <string.h>
#include <stdio.h>

char str[] =    "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] =   "         1         2         3         4         5";
char fmt2[] =   "12345678901234567890123456789012345678901234567890";

int main( void )
{
   char *pdest;
   int  result;
   printf( "String to be searched:\n   %s\n", string );
   printf( "   %s\n   %s\n\n", fmt1, fmt2 );
   pdest = strstr( string, str );
   result = (int)(pdest - string + 1);
   if ( pdest != NULL )
      printf( "%s found at position %d\n", str, result );
   else
      printf( "%s not found\n", str );
}
String to be searched:
   The quick brown dog jumps over the lazy fox
            1         2         3         4         5
   12345678901234567890123456789012345678901234567890

lazy found at position 36

См. также

Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
strcspn, , wcscspn_mbscspn_mbscspn_l
strcmp, , wcscmp_mbscmp
strpbrk, , wcspbrk_mbspbrk_mbspbrk_l
strrchr, , wcsrchr_mbsrchr_mbsrchr_l
strspn, , wcsspn_mbsspn_mbsspn_l
basic_string::find