0

我知道可以使用整数或 0 和 1 的字符串来初始化位集,如下所示:

bitset<8> myByte (string("01011000")); // initialize from string

无论如何在初始化后使用上面的字符串来更改位集的值吗?

4

2 回答 2

3

就像是

myByte = bitset<8>(string("01111001"));

应该做的伎俩。

于 2013-06-28T09:11:47.547 回答
3

是的,重载bitset::[]运算符返回一种bitset::reference类型,允许您将单个位作为普通布尔值访问,例如:

myByte[0] = true;
myByte[6] = false;

您甚至还有其他一些功能

myByte[0].flip(); // Toggle from true to false and vice-versa
bool value = myByte[0]; // Read the value and convert to bool
myByte[0] = myByte[1]; // Copy value without intermediate conversions

编辑:没有重载的=运算符来更改字符串中的单个位(它应该是一个字符),但你可以这样做:

myByte[0] = myString[0] == '1';

或与:

myByte[0] = bitset<8>(string("00000001"))[0];
myByte[0] = bitset<8>(myBitString)[0];

相当于:

myByte[0] = bitset<1>(string("1"))[0];
于 2013-06-28T09:03:16.493 回答