cout的二进制输出
今天,看到一个帖子,是用cout进行二进制输出的问题,示例代码如下: class A{public:A(int v): x(v) {}void outbin() { cout大家可以看出什么问题吗?cout并么有bin成员,所以以上代码是编译不过的!如果要输出二进制应该怎么办呢?其实,cout并不支持输出二进制,只支持八、十、十六进制三种方式,那该怎么办呢?大家是否会想起stl中扩展的容器bits
·
今天,看到一个帖子,是用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~,有些时候看看源码也没坏处!
更多推荐
已为社区贡献1条内容
所有评论(0)