Spec-Zone.ru › C++

std::memchr

Определён в заголовочном файле <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 и находит первое вхождение этого значения в первых count байтах (каждый интерпретируется как unsigned char) объекта, на который указывает ptr.

Эта функция ведёт себя так, как если бы она читала байты последовательно и останавливалась сразу после обнаружения совпадающего байта: если массив, на который указывает 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

См. также

strchr
находит первое вхождение символа
(функция)
findfind_iffind_if_not
(C++11)
находит первый элемент, удовлетворяющий заданным критериям
(шаблон функции и функциональный объект алгоритма)
ranges::findranges::find_ifranges::find_if_not
(C++20)(C++20)(C++20)
Документация C для memchr

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/byte/memchr

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API