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";
}

输出:

已找到搜索字符

[编辑] 参阅

寻找字符的首次出现
(函数) [编辑]
查找首个满足特定条件的元素
(函数模板) [编辑]
memchr 的 C 文档