Как назначить битовое значение из строки после инициализации

Я знаю, что можно инициализировать наборы битов, используя целое число или строку 0 и 1, как показано ниже:

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

Есть ли способ изменить значение набора битов, используя строку, как указано выше, после инициализации?

0

Решение

Что-то вроде

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

должен сделать свое дело.

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];
3