Я знаю, что можно инициализировать наборы битов, используя целое число или строку 0 и 1, как показано ниже:
bitset<8> myByte (string("01011000")); // initialize from string
Есть ли способ изменить значение набора битов, используя строку, как указано выше, после инициализации?
Что-то вроде
myByte = bitset<8>(string("01111001"));
должен сделать свое дело.
Да, перегружен 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];