std :: bitset <size>中的可变位长度

时间:2016-10-21 19:17:29

标签: c++ bitset std-bitset

我不确定如何正确解释这一点,但我正在寻找一种自动设置sizenumber自动

的方法

实施例

bitset<size>

具有固定位数的输出

cout << bitset<8>(7) << endl;

我想自动输出可变位数,例如输出0000 0111 111,而不是使用固定位。

基本上我想在不使用

时切断前面的11001

2 个答案:

答案 0 :(得分:1)

这实际上是两个问题。第一个是如何修剪给定位集的输出(即删除前导0),第二个是如何将输出减少到给定大小。

由于您只对ostream输出感兴趣,因此使用bitset::to_string()转换功能,然后应用string::substr非常合适。

有了这个,对于你的例子 - 你似乎想要保留7位 - 你会得到:

std::cout << std::bitset<8>{}.to_string().substr(1) << std::endl;  //removes the first bit 

您可以将其与方法组合以查找第一个设置位以构造trim函数。

答案 1 :(得分:0)

width: 56px;

std::bitset::_Find.first 将找到第一个位的索引。

我们将 n2 转换为字符串,然后我们从索引中找到字符串的子字符串,我们找到最高有效位减去总长度 - 1,因此给我们所需的结果。

测试用例:
256
100000000