Namespaces
Variants

wmemchr

From cppreference.net
< c ‎ | string ‎ | wide
定義先ヘッダ <wchar.h>
wchar_t * wmemchr ( const wchar_t * ptr, wchar_t ch, size_t count ) ;
(1) (C95以降)
/*QWchar_t*/ * wmemchr ( /*Qwchar_t*/ * ptr, wchar_t ch, size_t count ) ;
(2) (C23以降)
1) ptr が指すワイド文字配列または互換性のある型の整数配列の、最初の count 個のワイド文字内で、ワイド文字 ch が最初に出現する位置を特定します。
2) 型ジェネリック関数で (1) と同等の機能を持つ。 T を修飾子のないワイド文字オブジェクト型とする。
  • ptr の型が const T * の場合、戻り値の型は const wchar_t * となる。
  • それ以外の場合、 ptr の型が T * の場合、戻り値の型は wchar_t * となる。
  • それ以外の場合、動作は未定義となる。
これらの各ジェネリック関数のマクロ定義が抑制されて実際の関数にアクセスする場合(例えば ( wmemchr ) や関数ポインタが使用される場合)、実際の関数宣言 (1) が可視となる。

count がゼロの場合、この関数はヌルポインタを返します。

目次

パラメータ

ptr - 検査対象のワイド文字配列へのポインタ
ch - 検索対象のワイド文字
count - 検査するワイド文字の数

戻り値

ワイド文字の位置へのポインタ、またはそのような文字が見つからない場合はヌルポインタ。

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    wchar_t str[] = L"诺不轻信,故人不负我\0诺不轻许,故我不负人。";
    size_t sz = sizeof str / sizeof *str;
    wchar_t target = L'许';
    wchar_t* result = wmemchr(str, target, sz);
    if (result)
    {
        setlocale(LC_ALL, "en_US.utf8");
        printf("Found '%lc' at position %td\n",target, result - str);
    }
}

出力例:

Found '许' at position 14

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.29.4.5.8 wmemchr関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.29.4.5.8 wmemchr関数 (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.29.4.5.8 wmemchr関数 (p: 438)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.24.4.5.8 wmemchr関数 (p: 384)

関連項目

配列内で最初に現れる文字を検索する
(関数)
(C95)
ワイド文字列内で最初に現れるワイド文字を検索する
(関数)