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

From cppreference.com
< cpp‎ | utility‎ | bitset

template <class CharT, class Traits, size_t N> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, const bitset<N>& x); | (1) |
template <class CharT, class Traits, size_t N> std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is, 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 `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<<=operator>>=operator<<operator>> | performs binary shift left and shift right (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/bitset/operator_ltltgtgt2&oldid=103177"