Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | utility‎ | bitset
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstü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 Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
Definiert in der Header-Datei <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)

Fügt eine Bitset-Instanz in einen Zeichenstrom ein oder extrahiert sie daraus.

1) Schreibt die Bitset-Instanz x in den Zeichenstrom os, als ob sie zuerst mit to_string() in einen std::basic_string<CharT, Traits> konvertiert und dann mit dem operator<< (der eine FormattedOutputFunction für Strings ist) in os geschrieben würde.
Die für Einsen und Nullen zu verwendenden Zeichen werden aus der aktuell zugewiesenen Locale durch Aufruf von std::use_facet<std::ctype<CharT>>(os.getloc()).widen() mit '1' und '0' als Argumenten ermittelt.
2) Verhält sich wie eine FormattedInputFunction. Nach der Konstruktion und Überprüfung des Sentry-Objekts, welches führende Leerzeichen überspringen kann, werden bis zu N Zeichen aus is extrahiert und in der Bitset-Instanz x gespeichert.
Zeichen werden extrahiert, bis entweder
  • N Zeichen gelesen wurden,
  • das Dateiende in is erreicht wurde, 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.

Inhalt

[bearbeiten] Parameter

os - Der Zeichenstrom, in den geschrieben werden soll
ist - Der Zeichenstrom, aus dem gelesen werden soll
x - Die Bitset-Instanz, die gelesen oder geschrieben werden soll

[bearbeiten] Rückgabewert

1) os
2) is

[bearbeiten] 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; // reads "001", stream still holds "101"
    std::cout << b1 << '\n';
 
    std::bitset<8> b2;
    bit_stream >> b2; // reads "101", populates the 8-bit set as "00000101"
    std::cout << b2 << '\n';
}

Ausgabe

001
00000101

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 303 C++98 Ein Byte Zeichen wurden aus
is extrahiert, aber CharT kann mehrere Bytes haben
extrahiert CharT und vergleicht
es mit erweiterten '0' und '1'
LWG 396 C++98 Der von operator<< geschriebene Inhalt war Locale-unabhängig schreibt erweiterte '0'en und '1'en
LWG 3199 C++98 Das Extrahieren einer std::bitset<0> setzt immer failbit eine solche Extraktion setzt nie failbit

[bearbeiten] Siehe auch

führt binäre Links- und Rechtsschiebeoperationen durch
(public member function) [edit]