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)
находит первый элемент, удовлетворяющий определённым условиям
(шаблон функции)
C документация для memchr

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

Spec-Zone.ru

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