c++ - 使用 std::cout 格式化二进制文字

标签 c++ console output

下面的代码会将数字的二进制输出写入控制台,如下所示:

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

有没有简单的方法可以做到这一点?

最佳答案

这是解决方案之一:

template<size_t I>
std::ostream& operator << (std::ostream& os, const bitset<I>& b)
{
    int i;
    int check = b.size()-b.size()%3;

    for(i=b.size()-1; i >= check; --i)
        os << b[i];

    if(i>0)
        os << char(39);

    for(; i>=0; --i)
    {
        os << b[i];
        if(i%3 == 0 && i!=0)
            os << char(39);
    }
    return os;
}

关于c++ - 使用 std::cout 格式化二进制文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631095/

相关文章:

C++静态分配双端队列实现

c++ - 找不到以下代码中的错误 :- expected unqualified-id before try()

c++ - 在模板化 vector 中查找重复项

javascript - 使用 Chrome 控制台跟踪 javascript 的事件

javascript - 我如何在 "/dist/"文件夹中创建多输出文件夹 - Webpack

shell - “通配符”对象没有属性 'output'

C 控制台输出不连续,等待程序完成

c++ - 实现主c++程序与嵌入式ECL的通信

javascript - 如何通过chrome扩展中的javascript文件访问驻留在另一个javascript文件中的对象?

JavaScript 控制台程序