std::memchr(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::memchr πŸ’–

okay so bestie, this is the std::memchr page from the C++ Standard Libary β€” manual name folded in near the top, we're not copying header lines today. It's giving standard-library finder energy, and yes, the whole NAME section is literally just the same thing twice β€” iconic.

✨ NAME ✨

std::memchr β€” std::memchr (that's the name, no extra notes, periodt).

πŸ¦‹ Synopsis πŸ¦‹

Defined in header <cstring>:

const void* memchr( const void* ptr, int ch, std::size_t count );
void* memchr(       void* ptr, int ch, std::size_t count );

okay so here's the actual behavior, and it's lowkey specific: it converts ch to unsigned char and locates the first occurrence of that value in the initial count bytes β€” each of those bytes is interpreted as unsigned char β€” of the object pointed to by ptr.

This function behaves as if it reads the bytes sequentially and stops as soon as a matching bytes is found: if the array pointed to by ptr (since C++17) is smaller than count, but the match is found within the array, the behavior is well-defined.

yes, that (since C++17) is doing important work, bestie β€” don't lose it.

πŸŽ€ Parameters πŸŽ€

  • ptr β€” pointer to the object to be examined
  • ch β€” byte to search for
  • count β€” max number of bytes to examine

πŸ’– Return value πŸ’–

Pointer to the location of the byte, or a null pointer if no such byte is found.

🌸 Example 🌸

Search an array of characters. Run this code:

// Run this code

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

🌈 Output 🌈

search character found

πŸ‘‘ See also πŸ‘‘

  • strchr β€” finds the first occurrence of a character (function)
  • find
  • find_if β€” finds the first element satisfying specific criteria
  • find_if_not (function template)
  • (C++11)
  • C documentation for memchr

kisses and byeee: this page came from http://cppreference.com, version/date 2024.06.10, and the footer says std::memchr(3). mwah πŸ’…πŸ’–

πŸ“¦ where this page comes from