uint8_t нужен uint16_t для хранения значений из stringstream
Чтение IP-адреса из argv заставляет меня конвертировать его в uint32_t
эта функция сделает так:
uint32_t convert_string_ip_to_uint32_t (const string & string_ip)
{
stringstream s(string_ip) ;
uint16_t a,b,c,d; //to store the 4 ints
char ch; //to temporarily store the '.'
s >> a >> ch >> b >> ch >> c >> ch >> d ;
std::cout << a << " " << b << " " << c << " "<< d << std::flush;;
return ((uint32_t) a << 24 | b << 16 | c << 8 | d);
}
Но когда я изменяю тип данных a,b,c и d на uint8_t, результат будет размытым. Зачем? например, string_ip = '192.168.1.10'