operator<<,>>(std::bitset)
Depuis fr.cppreference.net
| 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
Les caractères utilisés pour les uns et les zéros sont obtenus depuis la locale actuellement associée en appelant
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'à
Les caractères sont extraits jusqu'à ce que
N caractères de is et stocke les caractères dans le bitset x.Les caractères sont extraits jusqu'à ce que
Ncaractères aient été lus,- la fin du fichier survienne dans
is, ou - le caractère suivant ne soit ni
is.widen('0')niis.widen('1').
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
Exécuter ce code
#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) |