0
std::string charBuff = "11010";
dbitset = boost::dynamic_bitset<unsigned char> (charBuff);
for (boost::dynamic_bitset<>::size_type i = 0; i < dbitset.size(); ++i) {
      std::cout << dbitset[i];
}

它从 LSB 打印到 MSB。输出:01011。

我应该怎么做才能正确打印 bitset。我可以反转我知道的字符缓冲区:)

4

1 回答 1

1
<unsigned car>

应该:

<unsigned char>

是什么buffer?你不应该用charBuff吗?

使用 s 的operator<<重载dynamic_bitset来实现你想要的。这是一个简化的解决方案:

#include <iostream>
#include <string>
#include <boost/dynamic_bitset.hpp>

int main()
{
    std::string charBuff("11010");
    boost::dynamic_bitset<> dbitset(charBuff);

    /* print LSB to MSB, in order */ 
    for (boost::dynamic_bitset<>::size_type i = 0; 
         i < dbitset.size(); ++i) {
        std::cout << dbitset[i];
    }
    std::cout << std::endl;

    /* print bits in the order you want */
    std::cout << dbitset << std::endl; 
    return 0;
}
于 2009-04-03T04:02:36.467 回答