【发布时间】:2016-01-06 10:41:55
【问题描述】:
以下代码会将数字的二进制输出写入控制台,如下所示:
00100000
#include <bitset>
using std::bitset;
#include <iostream>
using std::cout;
using std::endl;
int main()
{
typedef const unsigned char byte;
byte a = 0b00'000'000; // 0
byte b = 0b00'000'001; // 1
byte c = 0b00'000'010; // 2
byte d = 0b00'000'100; // 4
byte e = 0b00'001'000; // 8
byte f = 0b00'010'000; // 16
byte g = 0b00'100'000; // 32
byte h = 0b01'000'000; // 64
byte i = 0b10'000'000; // 128
bitset<8> x = a | 1 << 5;
cout << x << endl;
}
我希望输出是这样的:
00'100'000
有没有简单的方法来实现这一点?
【问题讨论】:
-
也许您可以尝试为
bitset重载<<运算符? -
为什么?在
operator<<cout 中先行。它不同于bitset << value。 -
我删除了我的评论。会尝试你的建议
-
我建议使用命名函数而不是重载。 ADL 很有趣,直到它不起作用并且你必须找出原因。