operator<<,>>(std::bitset)
Aus de.cppreference.net
| 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
Die Zeichen für Einsen und Nullen werden aus dem derzeit eingestellten
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
Zeichen werden extrahiert, bis entweder
N Zeichen aus is extrahiert und in dem bitset x gespeichert.Zeichen werden extrahiert, bis entweder
NZeichen gelesen wurden,- das Dateiende in
iserreicht ist, oder - das nächste Zeichen weder
is.widen('0')nochis.widen('1')ist.
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
Diesen Code ausführen
#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) |