From cppreference.com
Defined in header
template<classCharT,classTraits,std::size_tN>std::basic_ostream<CharT,Traits>&operator<<(std::basic_ostream<CharT,Traits>&os,conststd::bitset<N>&x); (1) template<classCharT,classTraits,std::size_tN>std::basic_istream<CharT,Traits>&operator>>(std::basic_istream<CharT,Traits>&is,std::bitset<N>&x); (2) Inserts or extracts a bitset from a character stream.
1) Writes the bitset x to the character stream os as if by first converting it to a std::basic_string<CharT,Traits> using
, and then writing it into os using the
(which is a
for strings).
The characters to use for ones and zeroes are obtained from the currently-imbued locale by calling std::use_facet<std::ctype<CharT>>(os.getloc()).widen() with '1' and '0' as arguments.
2) Behaves as a
. After constructing and checking the sentry object, which may skip leading whitespace, extracts up to N characters from is and stores the characters in the bitset x.
Characters are extracted until either
N characters have been read,
end-of-file occurs in is, or
the next character is neither is.widen('0') nor is.widen('1').
If N>0 and no characters are extracted, is.setstate(ios_base::failbit) is called.
Parameters
os - the character stream to write to is - the character stream to read from x - the bitset to be read or written Return value
1)os
2)is
Example
Run this code
#include<bitset>#include<iostream>#include<sstream>intmain(){std::stringbit_string="001101";std::istringstreambit_stream(bit_string);std::bitset<3>b1;bit_stream>>b1;// reads "001", stream still holds "101"std::cout<<b1<<'\n';std::bitset<8>b2;bit_stream>>b2;// reads "101", populates the 8-bit set as "00000101"std::cout<<b2<<'\n';}Output:
001 00000101 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 single-byte characters were extracted from
is, but CharT can have multiple bytes extracts CharT and compares
it with widened '0' and '1'
C++98 the content written by operator<< was locale-independent writes widened '0's and '1's
C++98 extracting a std::bitset<0> always sets failbitsuch extraction never sets failbitSee also