strpbrk
From cppreference.net
|
定義先ヘッダ
<string.h>
|
||
|
char
*
strpbrk
(
const
char
*
dest,
const
char
*
breakset
)
;
|
(1) | |
|
/*QChar*/
*
strpbrk
(
/*QChar*/
*
dest,
const
char
*
breakset
)
;
|
(2) | (C23以降) |
1 )
終端ナルバイト文字列
dest
が指す文字列を、
breakset
が指す終端ナルバイト文字列中の任意の文字が現れるまで走査し、その文字へのポインタを返します。
2)
型ジェネリック関数で
(1)
と同等の機能を持つ。
T
を修飾子のない文字オブジェクト型とする。
-
-
destの型が const T * の場合、戻り値の型は const char * となる。 -
それ以外の場合、
destの型が T * の場合、戻り値の型は char * となる。 - それ以外の場合、動作は未定義となる。
-
dest または breakset のいずれかがヌル終端バイト文字列へのポインタでない場合、動作は未定義です。
目次 |
パラメータ
| dest | - | 解析対象のヌル終端バイト文字列へのポインタ |
| breakset | - | 検索対象の文字を含むヌル終端バイト文字列へのポインタ |
戻り値
dest 内の最初の文字へのポインタで、 breakset 内にも存在するもの、またはそのような文字が存在しない場合はヌルポインタ。
注記
この名前は「string pointer break」を意味します。これは、セパレータ(「区切り」)文字の最初の文字へのポインタを返すためです。
例
このコードを実行
#include <stdio.h> #include <string.h> int main(void) { const char* str = "hello world, friend of mine!"; const char* sep = " ,!"; unsigned int cnt = 0; do { str = strpbrk(str, sep); // セパレータを検索 if(str) str += strspn(str, sep); // セパレータをスキップ ++cnt; // 単語カウントをインクリメント } while(str && *str); printf("There are %u words\n", cnt); }
出力:
There are 5 words
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.24.5.4 strpbrk関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.24.5.4 strpbrk関数 (p: 未定)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.24.5.4 strpbrk関数 (p: 368)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.21.5.4 strpbrk関数 (p: 331)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.11.5.4 strpbrk関数
関連項目
|
別のバイト文字列に見つからない文字のみで構成される
最大の先頭セグメントの長さを返す (function) |
|
|
文字の最初の出現を検索する
(function) |
|
|
(C11)
|
バイト文字列内の次のトークンを検索する
(function) |
|
C++ documentation
for
strpbrk
|
|