今天,看到一个帖子,是用cout进行二进制输出的问题,示例代码如下:

 

 

大家可以看出什么问题吗?cout并么有bin成员,所以以上代码是编译不过的!如果要输出二进制应该怎么办呢?

其实,cout并不支持输出二进制,只支持八、十、十六进制三种方式,那该怎么办呢?大家是否会想起标准库中的bitset类!

对了,就是用bitset来实现二进制的输出!

 

输出结果:

00000000000000000000000000001100
14
c
请按任意键继续. . .

哦,yes,完全正确!如果你要深究bitset是咋实现的,可以参考下面的代码(去除了一些冗余代码):

构造函数:

 

 转字串函数:

输出操作符重载函数:

这回你是否明白了呢?bitset类中

typedef unsigned long _Ty; // base type for a storage word

_Ty _Array[_Words + 1]; // the set of bits

说明所有的数据都是用unsigned long类型数组_Array存储的,在输出时,根据位运算转换成string,然后再输出!

O(∩_∩)O~,有些时候看看源码也没坏处!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐