Namespaces
Variants

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

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
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 depuis un flux de caractères.

1) Écrit le bitset x dans le flux de caractères os comme si on le convertissait d'abord en une std::basic_string<CharT, Traits> en utilisant to_string(), puis en l'écrivant dans os en utilisant l'operator<< (qui est un FormattedOutputFunction pour les chaînes).
Les caractères utilisés pour les uns et les zéros sont obtenus depuis la locale actuellement associée en appelant std::use_facet<std::ctype<CharT>>(os.getloc()).widen() avec '1' et '0' comme arguments.
2) Se comporte comme un FormattedInputFunction. Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs de début, 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 du fichier survienne 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ée.

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 à gauche et à droite
(fonction membre publique)