##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::bitset::bitset

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

constexpr bitset() noexcept; | (1) |
constexpr bitset( unsigned long long val ) noexcept; | (2) |
| (3) |
template< class CharT, class Traits, class Alloc > explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str, typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0, typename std::basic_string<CharT,Traits,Alloc>::size_type n = std::basic_string<CharT,Traits,Alloc>::npos); |  | (until C++11)
template< class CharT, class Traits, class Alloc > explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str, typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0, typename std::basic_string<CharT,Traits,Alloc>::size_type n = std::basic_string<CharT,Traits,Alloc>::npos, CharT zero = CharT(’0’), CharT one = CharT(’1’)); |  | (since C++11)
template< class CharT > explicit bitset( const CharT* str, typename std::basic_string<CharT>::size_type n = std::basic_string<CharT>::npos, CharT zero = CharT(’0’), CharT one = CharT(’1’)); | (4) | (since C++11)

Constructs a new bitset from one of several optional data sources:

1) Default constructor. Constructs a bitset with all bits set to zero.
2) Constructs a bitset using the bits in `val`. If the `N` is the size of the bitset and `M` is the number of set bits in `val`, then only min(`N`, `M`) bits will be included in the bitset.
3) Constructs a bitset using the characters in the std::basic_string `str`. An optional starting position `pos` and length `n` can be provided, as well as characters denoting alternate values for set (`one`) and unset (`zero`) bits.
The effective length of the initializing string is min(`n`, `str.size() - pos`).
If `pos > str.size()`, this constructor throws std::out_of_range. If any characters examined in `str` are not `zero` or `one`, it throws std::invalid_argument.
4) Similar to (3), but uses a `CharT*` instead of a std::basic_string.

### [edit] Parameters

val | - | number used to initialize the bitset
str | - | string used to initialize the bitset
pos | - | a starting offset into `str`
n | - | number of characters to use from `str`
one | - | alternate character for set bits in `str`
zero | - | alternate character for unset bits in `str`

### [edit] Exceptions

1. none

2. none

3. std::out_of_range if pos > str.size()

4. none

### [edit] Example

Run this code

    #include <bitset>
    #include <string>

    int main()
    {
        // empty constructor
        std::bitset<8> b1; // [0,0,0,0,0,0,0,0]

        // unsigned long long constructor
        std::bitset<8> b2(42); // [0,0,1,0,1,0,1,0]

        // string constructor
        std::string bit_string = "110010";
        std::bitset<8> b3(bit_string);       // [0,0,1,1,0,0,1,0]
        std::bitset<8> b4(bit_string, 2);    // [0,0,0,0,0,0,1,0]
        std::bitset<8> b5(bit_string, 2, 3); // [0,0,0,0,0,0,0,1]

        // string constructor using custom zero/one digits
        std::string alpha_bit_string = "aBaaBBaB";
        std::bitset<8> b6(alpha_bit_string, 0, alpha_bit_string.size(),
                          'a', 'B');         // [0,1,0,0,1,1,0,1]

        // char* constructor using custom digits
        std::bitset<8> b7("XXXXYYYY", 8, 'X', 'Y'); // [0,0,0,0,1,1,1,1]
        return 0;
    }

### [edit] See also

set | sets bits to true or given value (public member function) [edit]
reset | sets bits to false (public member function) [edit]

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