YoCol-YC 2022-11-18 22:56 采纳率: 87.5%
浏览 4
已结题

c++中怎么样用>>重载可以输入二进制数

求解答

c++中怎么样用>>重载可以输入二进制数

a
1001
a = 1001

a为定义的bool型数组

  • 写回答

1条回答 默认 最新

  • 浪客 2022-11-19 10:07
    关注

    直接输入数组不好确定输入的长度。推荐用结构体的方式。

    
    #include <iostream>
    using namespace std;
    
    typedef struct bin
    {
        bool data[64];
        int len;
    
    } Bin;
    
    istream &operator>>(istream &is, bool *b)
    {
        char n;
        int i = 0, len = 0, j, k;
        bool *a = b;
        while (len < 8)
        {
            n = is.get();
            if (n > '1' || n < '0')
                break;
    
            *a++ = n - '0';
            len++;
        }
        //输入内容后移
        k = 8 - len;
        for (i = len - 1; i >= 0; i--)
            b[i + k] = b[i];
    
        //高位补零
        for (i = k - 1; i >= 0; i--)
            b[i] = 0;
    
        return is;
    }
    
    istream &operator>>(istream &is, Bin &a)
    {
        char n;
        a.len = 0;
        while (a.len < 64)
        {
            n = is.get();
            if (n > '1' || n < '0')
                break;
    
            a.data[a.len] = n - '0';
            a.len++;
        }
    
        return is;
    }
    
    int main()
    {
        bool *a = new bool[8]{0};
        cin >> a;
        for (int i = 0; i < 8; i++)
            cout << a[i];
        cout << endl;
    
        Bin bin;
        cin >> bin;
        for (int i = 0; i < bin.len; i++)
            cout << bin.data[i];
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line