Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación triple
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 
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 en el flujo de caracteres os como si primero se convirtiera a un std::basic_string<CharT, Traits> usando to_string(), y luego se escribiera en os usando el operator<< (que es un FormattedOutputFunction para cadenas).
Los caracteres a usar para unos y ceros se obtienen de la configuración regional actualmente inmersa llamando a std::use_facet<std::ctype<CharT>>(os.getloc()).widen() con '1' y '0' como argumentos.
2) Se comporta como un FormattedInputFunction. Después de 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 se hayan leído caracteres,
  • ocurra fin de archivo en is, o
  • el siguiente carácter no sea ni is.widen('0') ni is.widen('1').
Si N > 0 y no se extraen caracteres, se llama a is.setstate(ios_base::failbit).

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 a la derecha
(función miembro pública)