2009-06-08 49 views
4

我試圖使用inet_addr功能轉換成一個字符的IP地址,但我認爲,因爲IP地址我傳遞到「inet_addr」功能前導零的(192.169.055.075)的「inet_addr '功能正在以不同的方式解釋。任何關於如何刪除前導零的建議?inet_addr函數和前導零

感謝

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

inet_addr()與解釋前導零爲八進制字節。 http://www.opengroup.org/onlinepubs/000095399/functions/inet_addr.html – 2009-06-08 18:26:50

+0

弗雷德你應該促進這個真正的答案:) – 2009-06-08 18:29:35

回答

6

您可以使用inet_pton(3)代替 - 它不解釋前導零爲八進制前綴。

0

如何:

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());