Namespaces
Variants

std:: memchr

From cppreference.net
定義先ヘッダ <cstring>
const void * memchr ( const void * ptr, int ch, std:: size_t count ) ;
void * memchr ( void * ptr, int ch, std:: size_t count ) ;

ch unsigned char に変換し、 ptr が指すオブジェクトの先頭 count バイト(各バイトは unsigned char として解釈)内でその値が最初に現れる位置を検索します。

この関数は、バイトを順次読み取り、一致するバイトが見つかり次第停止するかのように動作します: ptr が指す配列のサイズが count より小さい場合でも、配列内で一致が見つかれば、動作は明確に定義されます。

(C++17以降)

目次

パラメータ

ptr - 検査対象オブジェクトへのポインタ
ch - 検索対象のバイト値
count - 検査する最大バイト数

戻り値

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

文字配列を検索します。

#include <cstring>
#include <iostream>
int main()
{
    char arr[] = {'a', '\0', 'a', 'A', 'a', 'a', 'A', 'a'};
    char *pc = (char*) std::memchr(arr, 'A', sizeof arr);
    if (pc != nullptr)
        std::cout << "search character found\n";
    else
        std::cout << "search character not found\n";
}

出力:

search character found

関連項目

文字の最初の出現位置を検索
(関数)
特定の条件を満たす最初の要素を検索
(関数テンプレート)