# std::memchr

< cpp‎ | string‎ | byte

定义于头文件 `<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 <iostream>
    #include <cstring>

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

输出：

    search character found

### 参阅

strchr | 寻找字符的首次出现 (函数)
find find_if find_if_not (C++11) | 寻找首个满足特定判别标准的元素 (函数模板)