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 更好的方法请告诉我。
最佳答案
您可以扫描但不存储第一个参数,方法是在第一个格式说明符前加上 *
告诉 sscanf
解析但不存储该字段(您只需要 3 个参数在那种情况下):
sscanf(ipAddr.c_str(), "%*hu.%hu.%hu.%hu", &octet2, &octet3, &octet4);
关于c++ - 将 IP 地址分成八位字节,但使用 sscanf 跳过第一个八位字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963019/