operator<<,>>(std::bitset)
Von cppreference.com
| Definiert in der Header-Datei <bitset> |
||
| template< class CharT, class Traits, std::size_t N > std::basic_ostream<CharT, Traits>& |
(1) | |
| template< class CharT, class Traits, std::size_t N > std::basic_istream<CharT, Traits>& |
(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.
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
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.
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
Führen Sie diesen Code aus
#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 vergleichtes 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) |