std::memchr

来自cppreference.com
< 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 );

转换 chunsigned 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 << "已找到搜索字符\n";
    else
        std::cout << "未找到搜索字符\n";
}

输出:

已找到搜索字符

参阅

寻找字符的首次出现
(函数)
寻找首个满足特定判别标准的元素
(函数模板)