Namespaces
Variants

wcspbrk

From cppreference.net
< c ‎ | string ‎ | wide
ヘッダーで定義 <wchar.h>
wchar_t * wcspbrk ( const wchar_t * dest, const wchar_t * str ) ;
(1) (C95以降)
/*QWchar_t*/ * wcspbrk ( /*QWchar_t*/ * dest, const wchar_t * str ) ;
(2) (C23以降)
1) ワイド文字列 dest が指す文字列の中で、 str が指すワイド文字列にも含まれる最初の文字を検索します。
2) 型ジェネリック関数で (1) と同等の機能を持つ。 T を修飾子のないワイド文字オブジェクト型とする。
  • dest の型が const T * の場合、戻り値の型は const wchar_t * となる。
  • それ以外の場合、 dest の型が T * の場合、戻り値の型は wchar_t * となる。
  • それ以外の場合、動作は未定義となる。
これらの各ジェネリック関数のマクロ定義が抑制されて実際の関数にアクセスする場合(例えば ( wcspbrk ) や関数ポインタが使用される場合)、実際の関数宣言 (1) が可視となる。

目次

パラメータ

dest - 解析対象のヌル終端ワイド文字列へのポインタ
src - 検索対象の文字を含むヌル終端ワイド文字列へのポインタ

戻り値

dest 内に存在し、かつ str 内にも存在する最初の文字へのポインタ。 該当する文字が存在しない場合はヌルポインタを返す。

注記

この名前は「ワイド文字列ポインタブレーク」を意味します。これは、セパレータ(「ブレーク」)文字の最初の文字へのポインタを返すためです。

#include <stdio.h>
#include <wchar.h>
int main(void)
{
    const wchar_t* str = L"Hello world, friend of mine!";
    const wchar_t* sep = L" ,!";
    unsigned int cnt = 0;
    do {
       str = wcspbrk(str, sep); // セパレータを検索
       if (str) str += wcsspn(str, sep); // セパレータをスキップ
       ++cnt; // 単語カウントをインクリメント
    } while (str && *str);
    wprintf(L"There are %u words.\n", cnt);
}

出力:

There are 5 words.

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.29.4.5.3 wcspbrk関数 (p: 436)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.24.4.5.3 wcspbrk関数 (p: 382)

関連項目

(C95)
他のワイド文字列に含まれないワイド文字のみで構成される
最大先頭セグメントの長さを返す
(関数)
(C95)
ワイド文字列内でワイド文字が最初に現れる位置を検索する
(関数)
ある文字列中の任意の文字が別の文字列で最初に現れる位置を検索する
(関数)