Namespaces
Variants

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

From cppreference.net
Utilities library
Definido en el encabezado <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)

Inserta o extrae un bitset de un flujo de caracteres.

1) Escribe el bitset x al flujo de caracteres os como si primero se convirtiera a un std:: basic_string < CharT, Traits > usando to_string() , y luego escribiéndolo en os usando el operator<< (que es una FormattedOutputFunction para cadenas).
Los caracteres a usar para unos y ceros se obtienen de la localidad actualmente imbucida llamando a std:: use_facet < std:: ctype < CharT >> ( os. getloc ( ) ) . widen ( ) con '1' y '0' como argumentos.
2) Se comporta como una FormattedInputFunction . Tras construir y verificar el objeto centinela, que puede omitir espacios en blanco iniciales, extrae hasta N caracteres de is y almacena los caracteres en el bitset x .
Los caracteres se extraen hasta que:
  • N caracteres han sido leídos,
  • ocurre fin de archivo en is , o
  • el siguiente carácter no es ni is. widen ( '0' ) ni is. widen ( '1' ) .
Si N > 0 y no se extrae ningún carácter, se llama a is. setstate ( ios_base :: failbit ) .

Contenidos

Parámetros

os - el flujo de caracteres en el que escribir
is - el flujo de caracteres del que leer
x - el bitset que se va a leer o escribir

Valor de retorno

1) os
2) is

Ejemplo

#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; // lee "001", el stream aún contiene "101"
    std::cout << b1 << '\n';
    std::bitset<8> b2;
    bit_stream >> b2; // lee "101", llena el conjunto de 8 bits como "00000101"
    std::cout << b2 << '\n';
}

Salida:

001
00000101

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 303 C++98 se extraían caracteres de un solo byte de
is , pero CharT puede tener múltiples bytes
extrae CharT y lo compara
con '0' y '1' ensanchados
LWG 396 C++98 el contenido escrito por operator << era independiente de la configuración regional escribe '0' s y '1' s ensanchados
LWG 3199 C++98 extraer un std::bitset<0> siempre establecía failbit dicha extracción nunca establece failbit

Véase también

realiza desplazamiento binario a la izquierda y desplazamiento a la derecha
(función miembro pública)