c++ - 将 IP 地址分成八位字节,但使用 sscanf 跳过第一个八位字节

标签 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 更好的方法请告诉我。

最佳答案

您可以扫描但不存储第一个参数,方法是在第一个格式说明符前加上 * 告诉 sscanf 解析但不存储该字段(您只需要 3 个参数在那种情况下):

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

关于c++ - 将 IP 地址分成八位字节,但使用 sscanf 跳过第一个八位字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963019/

相关文章:

C++ 禁止将 `string` 常量转换为 `char*` - Alphabets to Morse converting program

c++ - 如何复制匿名 union

控制面板 PIDLs 奇怪的行为

c - 我在实现堆栈时遇到问题

c - 使用调试符号从指令指针查找变量名

c++ - C++ 应用程序是跨平台的吗?

c++ - 在makefile中规避重复库头和typedef的方法

c++ - 如何从文件中读取多组数据

c - 如何使用 CTFontCreateWithGraphicsFont 避免内存泄漏?

c - fscanf() 在不同机器上的行为不同