operator<<,>>(std::bitset)
De es.cppreference.net
| 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
Los caracteres a usar para unos y ceros se obtienen de la configuración regional actualmente inmersa llamando a
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
Los caracteres se extraen hasta que
N caracteres de is y almacena los caracteres en el bitset x.Los caracteres se extraen hasta que
Nse hayan leído caracteres,- ocurra fin de archivo en
is, o - el siguiente carácter no sea ni
is.widen('0')niis.widen('1').
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
Ejecutar este código
#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) |