求解答
c++中怎么样用>>重载可以输入二进制数
a
1001
a = 1001
a为定义的bool型数组
求解答
c++中怎么样用>>重载可以输入二进制数
a
1001
a = 1001
a为定义的bool型数组
直接输入数组不好确定输入的长度。推荐用结构体的方式。
#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;
}