Namespaces
Variants

std::bitset<N>:: test

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

Retourne la valeur du bit à la position pos (en comptant à partir de 0).

Contrairement à operator[] , il effectue une vérification des limites.

Table des matières

Paramètres

pos - position du bit à retourner (en comptant à partir de 0)

Valeur de retour

true si le bit demandé est défini, false sinon.

Exceptions

Lance std::out_of_range si pos ne correspond pas à une position de bit valide.

Exemple

#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 << "Le premier bit défini est à l'index " << idx << '\n';
    else
        std::cout << "aucun bit défini\n";
    try
    {
        std::bitset<0B10'1001'1010> bad;
        if (bad.test(bad.size()))
            std::cout << "Attendez-vous à l'inattendu !\n";
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << "Exception : " << ex.what() << '\n';
    }
}

Sortie possible :

Le premier bit défini est à l'index 4
Exception : bitset::test: __position (which is 666) >= _Nb (which is 666)

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2250 C++98 le comportement était indéfini si pos ne
correspond pas à une position de bit valide
lève toujours une
exception dans ce cas

Voir aussi

accède à un bit spécifique
(fonction membre publique)
(C++20)
compte le nombre de bits à 1 dans un entier non signé
(modèle de fonction)
vérifie si un nombre est une puissance entière de 2
(modèle de fonction)