2009-04-03 7 views
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]; 
} 

Imprime du LSB au MSB. Sortie: 01011.dynamic_bit set print?

Que dois-je faire pour que bitet est imprimé correctement. Je peux inverser le tampon de caractère que je suis au courant :)

Répondre

1
<unsigned car> 

devrait être:

<unsigned char> 

Qu'est-ce que buffer? Vous ne devriez pas utiliser charBuff? Utilisez la surcharge operator<< pour dynamic_bitset s pour obtenir ce que vous voulez. Voici une solution simplifiée:

#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; 
}