class Address {
private :
unsigned char arr[4] = {0};
bitset<8> bits[4];
public :
Address(){
char ip[50];
char temp[4];
cout <<"Enter your IP ADDRESS";
cin >>ip;
int i;
int k=0;
for(i=0;ip[i]!='\0';i++){
if(ip[i]!='.') arr[k]=arr[k]*10 + (ip[i]-48);
else k++;
//Easy PARSE
}
}
};
我需要为IPV4实现Address
类。当我调用我Address
课程的构造函数时,我正在接受&gt;将输入解析为4位的8位数组,基本上是IPV4的4个八位字节。
255.255.255.255例如。
现在我需要将它转换为4的二进制数组。我不想为此创建外部二进制转换器。我愿意使用bitset
来实现它。现在的问题是,我还没有找到一个bitset
函数,它允许我初始化位(从十进制转换为bitset
),而不是它的构造函数,只要我{{1}调用它调用类。我可以通过4个单独的成员指针来键入Address
并在bitset<8>
中分配每个成员指针,但这是非常不优雅的方法。有任何想法吗? :/
答案 0 :(得分:1)
您可以在构建后使用赋值运算符更改bitset
。
这可能是您正在寻找的部分:
for(int i=0; i <4; i++) {
bits[i] = bitset<8>(arr[i]);
}
答案 1 :(得分:1)
这样的事情怎么样:
#include <iostream>
#include <bitset>
int main()
{
std::bitset<8> bits[4];
std::cout << "Enter IP: ";
for (auto &bit : bits)
{
unsigned long n;
std::cin >> n;
bit = n;
std::cin.ignore();
}
// test
std::cout << std::endl;
for (auto const &bit : bits)
std::cout << bit.to_ulong() << " ";
std::cout << std::endl;
for (auto const &bit : bits)
std::cout << bit.to_string();
std::cout << std::endl;
}
192 168 0 1
11000000101010000000000000000001