std::bitset<N>::bitset
| (1) | ||
| bitset(); |
(C++11 前) | |
| constexpr bitset() noexcept; |
(C++11 起) | |
| (2) | ||
| bitset( unsigned long val ); |
(C++11 前) | |
| constexpr bitset( unsigned long long val ) noexcept; |
(C++11 起) | |
| (3) | ||
| template< class CharT, class Traits, class Alloc > explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str, |
(C++11 前) | |
| template< class CharT, class Traits, class Alloc > explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str, |
(C++11 起) | |
| template< class CharT > explicit bitset( const CharT* str, |
(4) | (C++11 起) |
从数个数据源之一构造新的 bitset :
M 位位置为对应 val 的位值,其中 M 是 unsigned long long 的位数和正在构造的 bitset 中的位数 N 的较小者。若 M 小于 N ( bitset 长于 32 (C++11 前)64 (C++11 起) 位,对于典型的 unsigned long (C++11 起)long 实现),则剩余位位置被初始化为零。str 中的字符构造 bitset 。能提供可选的起始位置 pos 和长度 n ,以及指代设置( one )和不设置( zero )位的替代值的字符。用 Traits::eq() 比较字符值。n, str.size() - pos) 。pos > str.size() ,则构造函数抛出 std::out_of_range 。若 str 中检验到的任何字符非 zero 或 one ,则抛出 std::invalid_argument 。CharT* 代替 std::basic_string 。等价于 bitset(n == basic_string<CharT>::npos ? basic_string<CharT>(str) : basic_string<CharT>(str, n), 0, n, zero, one) 。参数
| val | - | 用于初始化 bitset 的数字 |
| str | - | 用于初始化 bitset 的字符串 |
| pos | - | str 中的起始偏移
|
| n | - | 使用来自 str 的字符数
|
| one | - | 设置位于 str 中的替用字符
|
| zero | - | 不设置位于 str 中的替用字符
|
异常
示例
#include <bitset> #include <string> #include <iostream> #include <climits> int main() { // 空构造函数 std::bitset<8> b1; // [0,0,0,0,0,0,0,0] // unsigned long long 构造函数 std::bitset<8> b2(42); // [0,0,1,0,1,0,1,0] std::bitset<70> bl(ULLONG_MAX); // [0,0,0,0,0,0,1,1,1,...,1,1,1] in C++11 std::bitset<8> bs(0xfff0); // [1,1,1,1,0,0,0,0] // string 构造函数 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 构造函数 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* 构造函数 std::bitset<8> b7("XXXXYYYY", 8, 'X', 'Y'); // [0,0,0,0,1,1,1,1] std::cout << b1 << '\n' << b2 << '\n' << bl << '\n' << bs << '\n' << b3 << '\n' << b4 << '\n' << b5 << '\n' << b6 << '\n' << b7 << '\n'; }
可能的输出:
00000000 00101010 0000001111111111111111111111111111111111111111111111111111111111111111 11110000 00110010 00000010 00000001 01001101 00001111
参阅
| 将位置为 true 或者提供的值 (公开成员函数) | |
| 将位置为 false (公开成员函数) |