operator<<,>>(std::bitset) (3) - Linux Manuals

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

NAME

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

Synopsis


template <class CharT, class Traits, size_t N>
std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, (1)
const bitset<N>& x);
template <class CharT, class Traits, size_t N>
std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is, (2)
bitset<N>& x);


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 basic_string<CharT,Traits> using to_string(), and then writing it into os using the operator<< (which is a FormattedOutputFunction 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 FormattedInputFunction. 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 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


The character stream that was operated on, e.g. os or is.

Example


// Run this 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; // 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

See also


operator<<= performs binary shift left and shift right
operator>>= (public member function)
operator<<
operator>>