strstr, wcsstr, _mbsstr, _mbsstr_l
返回指向一个搜索字符串的第一个匹配项在字符串的。
重要
_mbsstr 和 _mbsstr_l 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 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的。 搜索不包括终止 null 字符。 wcsstr 和 _mbsstr 是 strstr的宽字符和多字节字符版本。 参数和返回 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。 这些功能的版本不 _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 等效项
请参见
参考
strcspn, wcscspn, _mbscspn, _mbscspn_l
strpbrk, wcspbrk, _mbspbrk, _mbspbrk_l