【问题标题】:inet_addr function and leading zerosinet_addr 函数和前导零
【发布时间】:2015-08-18 21:45:30
【问题描述】:

我正在尝试使用 inet_addr 函数来转换字符 IP 地址,但我认为由于我传递给“inet_addr”函数的 IP 地址具有前导零 (192.169.055.075),因此“inet_addr”函数对此有不同的解释。有关如何删除前导零的任何建议?

谢谢

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

【问题讨论】:

标签: c++ network-protocols


【解决方案1】:

您可以改用inet_pton(3) - 它不会将前导零解释为八进制前缀。

【讨论】:

    【解决方案2】:

    怎么样:

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

    【讨论】:

    • 谢谢....这也是解决我遇到的问题的另一种方法。诠释一个[4];字符 c[20]; if ( sscanf("192.169.055.075","%03d.%​​03d.%​​03d.%​​03d", a,a+1,a+2,a+3)== 4) { sprintf(c, "%d .%d.%d.%d", a[0], a[1], a[2], a[3]); }
    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多