1

我不确定如何正确解释这一点,但我正在寻找一种自动设置orsizenumber方法bitset<size>

例子

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

具有固定位数的输出

0000 0111

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

基本上我想0在不使用的时候剪掉前面的

4

2 回答 2

3

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

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

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

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

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

于 2016-10-21T19:45:28.940 回答
0
int main() {
    int n;
    cin >> n;
    bitset<64> n2(n);
    cout << n2.to_string().substr(64-n2._Find_first()-1) << endl;
}

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

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

测试用例:
256
100000000

于 2021-08-06T07:03:24.797 回答