我知道可以使用整数或0和1的字符串初始化位集,如下所示:
bitset<8> myByte (string("01011000")); // initialize from string
无论如何,在初始化之后是否使用如上所述的字符串更改位集的值?
答案 0 :(得分: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];
答案 1 :(得分:3)
像
这样的东西myByte = bitset<8>(string("01111001"));
应该这样做。