Namespaces
Variants

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

From cppreference.net
Utilities library
Défini dans l'en-tête <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)

Insère ou extrait un bitset d'un flux de caractères.

1) Écrit le bitset x dans le flux de caractères os comme s'il était d'abord converti en une std:: basic_string < CharT, Traits > en utilisant to_string() , puis écrit dans os en utilisant l' operator<< (qui est une FormattedOutputFunction pour les chaînes).
Les caractères utilisés pour les uns et les zéros sont obtenus de la locale actuellement imbriquée en appelant std:: use_facet < std:: ctype < CharT >> ( os. getloc ( ) ) . widen ( ) avec '1' et '0' comme arguments.
2) Se comporte comme une FormattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait jusqu'à N caractères de is et stocke les caractères dans le bitset x .
Les caractères sont extraits jusqu'à ce que
  • N caractères aient été lus,
  • la fin de fichier se produise dans is , ou
  • le caractère suivant ne soit ni is. widen ( '0' ) ni is. widen ( '1' ) .
Si N > 0 et qu'aucun caractère n'est extrait, is. setstate ( ios_base :: failbit ) est appelé.

Table des matières

Paramètres

os - le flux de caractères dans lequel écrire
is - le flux de caractères depuis lequel lire
x - le bitset à lire ou écrire

Valeur de retour

1) os
2) is

Exemple

#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; // lit "001", le flux contient encore "101"
    std::cout << b1 << '\n';
    std::bitset<8> b2;
    bit_stream >> b2; // lit "101", initialise l'ensemble de 8 bits comme "00000101"
    std::cout << b2 << '\n';
}

Sortie :

001
00000101

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 303 C++98 les caractères mono-octets étaient extraits de
is , mais CharT peut avoir plusieurs octets
extrait CharT et le compare
avec '0' et '1' élargis
LWG 396 C++98 le contenu écrit par operator << était indépendant des paramètres régionaux écrit des '0' et '1' élargis
LWG 3199 C++98 l'extraction d'un std::bitset<0> positionne toujours failbit cette extraction ne positionne jamais failbit

Voir aussi

effectue un décalage binaire vers la gauche et vers la droite
(fonction membre publique)