Namespaces
Variants

std::bitset<N>:: test

From cppreference.net
Utilities library
bool test ( std:: size_t pos ) const ;
(constexpr начиная с C++23)

Возвращает значение бита в позиции pos (отсчёт с 0).

В отличие от operator[] , он выполняет проверку границ.

Содержание

Параметры

pos - позиция возвращаемого бита (отсчет с 0)

Возвращаемое значение

true если запрошенный бит установлен, false в противном случае.

Исключения

Выбрасывает std::out_of_range если pos не соответствует допустимой позиции бита.

Пример

#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 << "Первый установленный бит находится на позиции " << idx << '\n';
    else
        std::cout << "нет установленных битов\n";
    try
    {
        std::bitset<0B10'1001'1010> bad;
        if (bad.test(bad.size()))
            std::cout << "Ожидайте неожиданного!\n";
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << "Исключение: " << ex.what() << '\n';
    }
}

Возможный вывод:

Первый установленный бит находится на позиции 4
Исключение: bitset::test: __position (which is 666) >= _Nb (which is 666)

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2250 C++98 the behavior was undefined if pos does
not correspond to a valid bit position
always throws an
exception in this case

Смотрите также

доступ к определенному биту
(публичная функция-член)
(C++20)
подсчитывает количество 1 битов в беззнаковом целом числе
(шаблон функции)
проверяет, является ли число целой степенью 2
(шаблон функции)