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


strstr, wcsstr, _mbsstr, _mbsstr_l

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

Важно!

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

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
    Строка, заканчивающаяся нулевым символом, в которой будет производиться поиск.

  • strSearch
    Строка, заканчивающаяся нулевым символом, поиск которой будет производиться.

  • locale
    Языковой стандарт, который необходимо использовать.

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

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

Заметки

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

Примечание о безопасностиПримечание по безопасности

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

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

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

Универсальное текстовое сопоставление функций

Подпрограмма 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 );
}
  

Эквивалент в .NET Framework

System::String::IndexOf

См. также

Ссылки

Управление строками (CRT)

Языковой стандарт

Интерпретация последовательностей в многобайтной кодировке

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