Функция inet_addr и ведущие нули - PullRequest
4 голосов
/ 08 июня 2009

Я пытаюсь использовать функцию inet_addr для преобразования IP-адреса символа, но я думаю, что поскольку IP-адрес, который я передаю функции 'inet_addr', имеет начальный ноль (192.169.055.075), 'inet_addr' Функция интерпретирует это по-разному. Любое предложение о том, как удалить ведущие нули?

Спасибо

char IPAddr[20]; //192.169.055.075
ulAddr = inet_addr(IPAddr);

Ответы [ 2 ]

6 голосов
/ 08 июня 2009

Вместо этого вы можете использовать inet_pton(3) - он не интерпретирует начальный ноль как восьмеричный префикс.

0 голосов
/ 08 июня 2009

Как насчет:

string addr("192.168.055.075");
replace( addr.begin(), addr.end(), '.', ' ' );
istringstream iss(addr);
int a,b,c,d; 
iss >> a >> b >> c >> d;
ostringstream oss; 
oss << a << '.' << b << '.' << c << '.' << d;
string addrWithoutLeadingZeros( oss.str() );
...