2013-05-03 131 views
2

我想计算Ipv4和Ipv6地址的前缀长度。子网掩码可以是字符串形式(1,32,97等)或点状格式(255.255.0.0)。我想强加以下条件。 1)对于ipv4,这两种格式都应该被允许。但是当我们从字符串转换为无符号时,前缀长度不应超过31 2)对于ipv6,只允许前缀长度。它不应该超过127ipv6地址的前缀长度计算

虽然我可以很容易地通过传递子例程来完成上述计算,但我被要求使用boost定义的类和方法。

任何人都可以为上述建议适当的助推方法。我试图做一些搜索,但无法做到这一点。

参数可以是前缀长度字符串格式(16,97)或虚线格式的掩码,也可以是地址(字符串)。基于已经提到的限制,boost方法应该能够将前缀长度确定为无符号。

回答

0

有用的提升部件是regex,分析你得到了什么,和lexical_cast将字符串转换为数字。