为 Bitset 赋值

Sam*_*202 1 c++ bitset c++11

我很想知道为什么下面的代码有效!根据 bitset 模板类,您可以通过构造函数为 bitset(int 或二进制表示为字符串)赋值,但之后不能。但是在这里你可以看到显式分配一个整数工作正常。

#include <iostream>
#include <bitset>
#include <string>
using namespace std;

int main()
{
    bitset<8> b(string("101"));
    cout << b.to_ullong()<<"\n";
    b= 145;
    cout << b<<"\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个问题也可能是相关的。 初始化后如何从字符串中分配位集值

Axa*_*alo 5

Bitset 的非字符串构造函数是隐式的

如果它们被声明为显式,你确实必须写

b = bitset<8>(145);
Run Code Online (Sandbox Code Playgroud)