C++ 更改位集中的整数
如何更改位集使用的整数?假设我使用C++ 更改位集中的整数,c++,std-bitset,C++,Std Bitset,如何更改位集使用的整数?假设我使用bitset声明一个变量mybitset,它存储一个数字的位,比如32。在做了一些操作之后,我希望mybitset存储其他数字的位,比如63。我如何做到这一点 我在下面添加了一小段示例代码来帮助解释 bitset<32> mybits(32); .... mybits(63); // gives compilation error here, stating "no match for call to '(std::bitset<32u>
bitset
声明一个变量mybitset
,它存储一个数字的位,比如32。在做了一些操作之后,我希望mybitset
存储其他数字的位,比如63。我如何做到这一点
我在下面添加了一小段示例代码来帮助解释
bitset<32> mybits(32);
....
mybits(63); // gives compilation error here, stating "no match for call to '(std::bitset<32u>) (uint&)'"
位集mybits(32);
....
mybits(63);//此处给出编译错误,声明“调用(std::bitset)(uint&)不匹配”
我觉得应该有一些简单的方法来做到这一点,但还没有找到任何东西 只要打电话:
myBits=std::bitset{63}代码>您可以使用
mybits = bitset<32>(63);
后者之所以有效,是因为63可隐式转换为位集
(因为long
中的构造函数未标记为explicit
)。它的功能与第一个版本相同,但不太详细。副本可分配,因此您可以使用所需的值创建一个新副本,并将其分配给要更改的位集:
bitset<32> mybitset{21};
mybitset = bitset<32>{42};
(从
位集
满足和的要求
因此,您可以简单地从另一个匹配相同模板参数签名的std::bitset
分配:
bitset<32> mybits(32);
// ....
mybits = bitset<32>(63);
并直接赋值:
mybitset = {42};
bitset<32> mybits(32);
// ....
mybits = bitset<32>(63);
bitset( unsigned long val ); // (until C++11)
constexpr bitset( unsigned long long val );
mybits = 63;