c++ - ipv6地址的前缀长度计算

标签 c++ boost

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

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

任何人都可以为上述建议适当的 boost 方法。我已尝试进行一些搜索,但无法搜索。

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

最佳答案

有用的 boost 部分是 regex,用于分析您得到的内容,以及 lexical_cast 用于将字符串转换为数字。

关于c++ - ipv6地址的前缀长度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353634/

相关文章:

c++ - 如何检查模板类中的变量是否为字符串类型?

c++ - MAC OS X下如何配置TCP_KEEPALIVE

c++ - 存储一个 boost multi_index 索引迭代器

c++ - boost MPL 以生成对象序列化代码?

C++:关于指针和引用,什么时候使用它们?

Visual Studio 上调用堆栈的 C++ Getters 和 Setters 替代方案

c++ - Boost 1.64 和 Visual Studio 2017 的问题

c++ - 为什么 `std::prev` 不会引发 `std::unordered_set` 迭代器的错误?

c++ - 在 C++ 中获取 twitter #hashtag 帖子

c++ - 我可以在 C++ 中使用 boost 生成多少个线程?