Namespaces
Variants

operator<<,>>(std::bitset)

Aus de.cppreference.net
 
 
Hilfsprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmhilfsprogramme
Variadische Funktionen
Koroutinenunterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsprogramme
Relationale Operatoren (veraltet in C++20)
Integer-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Tausch und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Definiert in Header <bitset>
template< class CharT, class Traits, std::size_t N >
std::basic_ostream<CharT, Traits>&
    operator<<( std::basic_ostream<CharT, Traits>& os, const std::bitset<N>& x );
(1)
template< class CharT, class Traits, std::size_t N >
std::basic_istream<CharT, Traits>&
    operator>>( std::basic_istream<CharT, Traits>& is, std::bitset<N>& x );
(2)

Ein- oder Ausgabe eines bitset aus einem Zeichenstrom.

1) Schreibt das bitset x in den Zeichenstrom os, indem es zuerst wie mit std::basic_string<CharT, Traits>to_string() in eine umgewandelt und dann mit dem osoperator (ein <<FormattedOutputFunction für Zeichenketten) in geschrieben wird.
Die Zeichen für Einsen und Nullen werden aus dem derzeit eingestellten std::use_facet<std::ctype<CharT>>(os.getloc()).widen() durch Aufruf von '1' mit den Argumenten '0' ermittelt.
2) Verhält sich wie eine FormattedInputFunction. Nach Erstellung und Prüfung des Sentry-Objekts, das führende Leerzeichen überspringen kann, werden bis zu N Zeichen aus is extrahiert und in dem bitset x gespeichert.
Zeichen werden extrahiert, bis entweder
  • N Zeichen gelesen wurden,
  • das Dateiende in is erreicht ist, oder
  • das nächste Zeichen weder is.widen('0') noch is.widen('1') ist.
Wenn N > 0 und keine Zeichen extrahiert wurden, wird is.setstate(ios_base::failbit) aufgerufen.

Parameter

os - der Zeichenstrom, in den geschrieben wird
is - der Zeichenstrom, aus dem gelesen wird
x - das zu lesende oder zu schreibende Bitset

Rückgabewert

1) os
2) is

Beispiel

#include <bitset>
#include <iostream>
#include <sstream>
int main()
{
    std::string bit_string = "001101";
    std::istringstream bit_stream(bit_string);
    std::bitset<3> b1;
    bit_stream >> b1; // liest "001", Stream enthält noch "101"
    std::cout << b1 << '\n';
    std::bitset<8> b2;
    bit_stream >> b2; // liest "101", füllt das 8-Bit-Set als "00000101"
    std::cout << b2 << '\n';
}

Ausgabe:

001
00000101

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 303 C++98 Einzelbyte-Zeichen wurden aus
is extrahiert, aber CharT kann mehrere Bytes haben
extrahiert CharT und vergleicht
es mit erweitertem '0' und '1'
LWG 396 C++98 der durch operator << geschriebene Inhalt war lokaleunabhängig schreibt erweiterte '0' en und '1' en
LWG 3199 C++98 das Extrahieren eines std::bitset<0> setzt immer failbit solche Extraktion setzt niemals failbit

Siehe auch

führt bitweise Verschiebung nach links und rechts durch
(öffentliche Elementfunktion)