将IP地址分解为八位字节,但使用sscanf跳过第一个八位字节

时间:2017-03-22 21:31:58

标签: c++ c

unsigned short octet2, octet3, octet4;
sscanf(ipAddr.c_str(), "%hu.%hu.%hu.%hu", &octet2, &octet2, &octet3, &octet4);

ipAddr是一个字符串。

从上面的代码中,它成功地打破了八位字节。但是,我想避免触及IP地址的第一个八位字节。我想避免两次写入octet2的额外操作。

例如,使用IP地址1.2.3.4,我会将IP地址分解为2,然后是3,然后是4,而不会触及1.

我的操作将完成超过一百万次,除非有比sscanf更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:3)

你可以通过*前面的第一个格式说明符来扫描但不存储第一个参数,告诉sscanf解析但不存储字段(在这种情况下你只需要3个参数):< / p>

sscanf(ipAddr.c_str(), "%*hu.%hu.%hu.%hu", &octet2, &octet3, &octet4);