Namespaces
Variants

std::bitset<N>:: test

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

Gibt den Wert des Bits an der Position pos zurück (Zählung beginnt bei 0).

Im Gegensatz zu operator[] führt es eine Bereichsprüfung durch.

Inhaltsverzeichnis

Parameter

pos - Position des zurückzugebenden Bits (Zählung ab 0)

Rückgabewert

true wenn das angeforderte Bit gesetzt ist, false andernfalls.

Ausnahmen

Wirft std::out_of_range falls pos keiner gültigen Bit-Position entspricht.

Beispiel

#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 << "Das erste gesetzte Bit befindet sich an Index " << idx << '\n';
    else
        std::cout << "Keine gesetzten Bits\n";
    try
    {
        std::bitset<0B10'1001'1010> bad;
        if (bad.test(bad.size()))
            std::cout << "Erwarte das Unerwartete!\n";
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << "Exception: " << ex.what() << '\n';
    }
}

Mögliche Ausgabe:

Das erste gesetzte Bit befindet sich an Index 4
Exception: bitset::test: __position (which is 666) >= _Nb (which is 666)

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2250 C++98 das Verhalten war undefiniert wenn pos nicht
einer gültigen Bit-Position entspricht
wirft in diesem Fall immer eine
Exception

Siehe auch

greift auf bestimmtes Bit zu
(öffentliche Elementfunktion)
(C++20)
zählt die Anzahl der 1 Bits in einer vorzeichenlosen Ganzzahl
(Funktionstemplate)
prüft, ob eine Zahl eine ganzzahlige Zweierpotenz ist
(Funktionstemplate)