Namespaces
Variants

std::bitset<N>:: test

From cppreference.net
Utilities library
bool test ( std:: size_t pos ) const ;
(constexpr desde C++23)

Devuelve el valor del bit en la posición pos (contando desde 0).

A diferencia de operator[] , realiza una verificación de límites.

Contenidos

Parámetros

pos - posición del bit a retornar (contando desde 0)

Valor de retorno

true si el bit solicitado está establecido, false en caso contrario.

Excepciones

Lanza std::out_of_range si pos no corresponde a una posición de bit válida.

Ejemplo

#include <bit>
#include <bitset>
#include <cassert>
#include <iostream>
#include <stdexcept>
int main()
{
    std::bitset<10> b1("1111010000");
    std::size_t idx = 0;
    while (idx < b1.size() && !b1.test(idx))
        ++idx;
    assert(static_cast<int>(idx) == std::countr_zero(b1.to_ulong()));
    if (idx < b1.size())
        std::cout << "El primer bit establecido está en el índice " << idx << '\n';
    else
        std::cout << "no hay bits establecidos\n";
    try
    {
        std::bitset<0B10'1001'1010> bad;
        if (bad.test(bad.size()))
            std::cout << "¡Espera lo inesperado!\n";
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << "Excepción: " << ex.what() << '\n';
    }
}

Salida posible:

El primer bit establecido está en el índice 4
Excepción: bitset::test: __position (which is 666) >= _Nb (which is 666)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2250 C++98 el comportamiento era indefinido si pos no
corresponde a una posición de bit válida
siempre lanza una
excepción en este caso

Véase también

accede a un bit específico
(función miembro pública)
(C++20)
cuenta el número de bits 1 en un entero sin signo
(plantilla de función)
verifica si un número es una potencia entera de 2
(plantilla de función)