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

7

我有一个二进制字符串存储在文件中,看起来像这样:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

(共256位)。我能否快速地将此字符串设置为bitset<256>的值?

目前,我的方法是:

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

但是我的结果不正确。

你确定t=sizeof(c)-1是正确的吗?sizeof(c)是什么? - Patashu
1
是的,有一个构造函数可以做到这一点。 - chris
2个回答

8

我能快速将这个字符串设置为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 ;

1
为什么不直接通过索引访问 ?比如...
b[t] = c[t] - '0';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接