Namespaces
Variants

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

From cppreference.net
Utilities library
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)

Fügt ein Bitset in einen Zeichenstrom ein oder extrahiert es daraus.

1) Schreibt das Bitset x in den Zeichenstrom os , als ob es zuerst in einen std:: basic_string < CharT, Traits > konvertiert würde mittels to_string() und dann in os geschrieben würde unter Verwendung des operator<< (welcher eine FormattedOutputFunction für Strings ist).
Die Zeichen für Einsen und Nullen werden aus der aktuell eingestellten Locale durch Aufruf von std:: use_facet < std:: ctype < CharT >> ( os. getloc ( ) ) . widen ( ) mit '1' und '0' als Argumente erhalten.
2) Verhält sich wie eine FormattedInputFunction . Nach dem Konstruieren und Prüfen des Sentry-Objekts, das führende Leerzeichen überspringen kann, extrahiert bis zu N Zeichen aus is und speichert die Zeichen im Bitset x .
Zeichen werden extrahiert bis entweder
  • N Zeichen gelesen wurden,
  • ein Dateiende in is auftritt, oder
  • das nächste Zeichen weder is. widen ( '0' ) noch is. widen ( '1' ) ist.
Falls N > 0 und keine Zeichen extrahiert wurden, wird is. setstate ( ios_base :: failbit ) aufgerufen.

Inhaltsverzeichnis

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 binäre Linksverschiebung und Rechtsverschiebung durch
(öffentliche Elementfunktion)