如何从二进制字符串创建位集?

Geo*_*e L 6 c++ char bitset

我在一个看起来像的文件中有一个二进制字符串

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

(256位).我可以将此字符串设置为bitset<256>非常快的值吗?

目前我在做

for (int t = sizeof(c) - 1; t > 0; t--) {
   if (c[t] == '1') {
      b |= 1;
   }
   b <<= 1;
}
b >>= 1;
Run Code Online (Sandbox Code Playgroud)

但我的结果不正确.

Sha*_*our 6

我可以将此字符串设置为bitset <256>的值吗?

是的,您可以只使用构造函数,下面的示例是从文档中获取并且也适用于256:

std::string bit_string = "110010";
std::bitset<8> b3(bit_string);       // [0,0,1,1,0,0,1,0]

std::cout << b3.to_string() << std::endl ;
Run Code Online (Sandbox Code Playgroud)