strstr、wcsstr、_mbsstr、_mbsstr_l

返回指向在字符串的一个搜索字符串的第一个匹配项。

重要

_mbsstr 和 _mbsstr_l 不能用于在 Windows 运行时. 中执行应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(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
    要搜索的 null 终止的字符串。

  • strSearch
    要搜索 null 终止的字符串。

  • locale
    要使用的区域设置。

返回值

如果 strSearch 未出现在 str,则返回指向 strSearch 的第一个匹配项在 str的指针或 NULL指针。 如果 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 和非const 版本可用,则会定义宏 _CONST_CORRECT_OVERLOADS。 如果这两个 C++ 重载都需要非 const 行为,请定义符号 _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