I was looking for some STL support for binary strings. bitset appears to be very useful, however I couldn't manipulate the individual bits sucessfully.
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
string b = bitset<8>(128).to_string();
for(auto &x:b)
{
x = 1 and x-'0' ; cout<<b<<"\n";
}
return 0;
}
So, should I use vector or bitset can be used for manipulating individual bits ?
The above program gives:
☺0000000
☺ 000000
☺ 00000
☺ 0000
☺ 000
☺ 00
☺ 0
☺
I know this happens because I am manipulating char, which when set to 0 prints the associated ascii character. My question is can I loop through a bitset and simultaneously modify the individual bits?
For example I surely can't do below :
#include <iostream>
#include <string>
#include <bitset>
int main ()
{
std::bitset<16> baz (std::string("0101111001"));
std::cout << "baz: " << baz << '\n';
for(auto &x: baz)
{
x = 1&x;
}
std::cout << "baz: " << baz << '\n';
return 0;
}
You can easily manipulate bits of
std::bitset
usingset,reset,flip, operator[]
methods. See http://www.cplusplus.com/reference/bitset/bitset/