扫描字符串以查找指定字符集中的字符。
重要
_mbspbrk 和 _mbspbrk_l 无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
char *strpbrk(
   const char *str,
   const char *strCharSet
); // C only
char *strpbrk(
   char *str,
   const char *strCharSet
); // C++ only
const char *strpbrk(
   const char *str,
   const char *strCharSet
); // C++ only
wchar_t *wcspbrk(
   const wchar_t *str,
   const wchar_t *strCharSet
); // C only
wchar_t *wcspbrk(
   wchar_t *str,
   const wchar_t *strCharSet
); // C++ only
const wchar_t *wcspbrk(
   const wchar_t *str,
   const wchar_t *strCharSet
); // C++ only
unsigned char *_mbspbrk(
   const unsigned char *str,
   const unsigned char *strCharSet
); // C only
unsigned char *_mbspbrk(
   unsigned char *str,
   const unsigned char *strCharSet
); // C++ only
const unsigned char *_mbspbrk(
   const unsigned char *str,
   const unsigned char *strCharSet
); // C++ only
unsigned char *_mbspbrk_l(
   const unsigned char *str,
   const unsigned char *strCharSet,
   _locale_t locale
); // C only
unsigned char *_mbspbrk_l(
   unsigned char *str,
   const unsigned char *strCharSet,
   _locale_t locale
); // C++ only
const unsigned char *_mbspbrk_l(
   const unsigned char *str,
   const unsigned char* strCharSet,
   _locale_t locale
); // C++ only
参数
str
null 终止的搜索字符串。
strCharSet
null 终止的字符集。
locale
要使用的区域设置。
返回值
返回指向 strCharSet 中的任何字符(属于 str 字符集)首次出现位置的指针;如果两个字符串参数没有共同的字符,则返回 NULL 指针。
备注
strpbrk 函数返回指向 str 中的某个字符首次出现位置的指针,该字符属于 strCharSet 中的字符集。 搜索不包括终止空字符。
wcspbrk 和 _mbspbrk 分别是 strpbrk 的宽字符及多字节字符版本。 wcspbrk 的参数和返回值为宽字符字符串。 _mbspbrk 的参数和返回值为多字节字符字符串。
_mbspbrk 会验证其参数。 如果 str 或 strCharSet 为 NULL,则会调用无效参数处理程序,如参数验证中所述。 如果允许继续执行,则 _mbspbrk 返回 NULL,并将 errno 设置为 EINVAL。 strpbrk 和 wcspbrk 不会验证其参数。 否则这三个函数否则具有相同行为。
_mbspbrk 类似于 _mbscspn,只不过 _mbspbrk 返回一个指针,而不是 size_t 类型的值。
在 C 中,这些函数采用第一个参数的一个 const 指针。 在 C++ 中,有两个重载可用。 采用指向 const 的指针的重载返回指向 const 的指针;采用指向非const 的版本的指针返回指向非const 的指针。 如果这些函数的 const 和非 const 版本可用,则会定义宏 _CRT_CONST_CORRECT_OVERLOADS。 如果这两个 C++ 重载都需要非 const 行为,请定义符号 _CONST_RETURN。
输出值受区域设置的 LC_CTYPE 类别设置影响;有关详细信息,请参阅 setlocale。 这些不带 _l 后缀的函数的版本使用当前区域设置实现与该区域设置相关的行为;带有 _l 后缀的版本相同,只不过它使用传递的区域设置参数。 有关详细信息,请参阅 Locale。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
| TCHAR.H 例程 | _UNICODE和_MBCS未定义 | _MBCS已定义 | _UNICODE已定义 | 
|---|---|---|---|
| _tcspbrk | strpbrk | _mbspbrk | wcspbrk | 
| 不适用 | 不适用 | _mbspbrk_l | 不适用 | 
要求
| 例程 | 必需的标头 | 
|---|---|
| strpbrk | <string.h> | 
| wcspbrk | <string.h> 或 <wchar.h> | 
| %> | <mbstring.h> | 
有关兼容性的更多信息,请参见 兼容性。
示例
// crt_strpbrk.c
#include <string.h>
#include <stdio.h>
int main( void )
{
   char string[100] = "The 3 men and 2 boys ate 5 pigs\n";
   char *result = NULL;
   // Return pointer to first digit in "string".
   printf( "1: %s\n", string );
   result = strpbrk( string, "0123456789" );
   printf( "2: %s\n", result++ );
   result = strpbrk( result, "0123456789" );
   printf( "3: %s\n", result++ );
   result = strpbrk( result, "0123456789" );
   printf( "4: %s\n", result );
}
1: The 3 men and 2 boys ate 5 pigs
2: 3 men and 2 boys ate 5 pigs
3: 2 boys ate 5 pigs
4: 5 pigs