Solutions
Here are the solutions for the above problem-solving sections.
15. IPv4 data type
The problem requires writing a class to represent an IPv4 address. This is a 32-bit value, usually represented in decimal dotted format, such as 168.192.0.100
; each part of it is an 8-bit value, ranging from 0 to 255. For easy representation and handling, we can use four unsigned char
to store the address value. Such a value could be constructed either from four unsigned char
or from an unsigned long
. In order to be able to read a value directly from the console (or any other input stream) and be able to write the value to the console (or any other output stream), we have to overload operator>>
and operator<<
. The following listing shows a minimal implementation that can meet the requested functionality:
class ipv4 { std::array<unsigned char, 4> data; public: constexpr ipv4() : data{ {0} } {} constexpr ipv4(unsigned char const a, unsigned char const b, unsigned...