c++ - 将 boost::asio::ip::address_v4 隐藏为字符串

标签 c++ boost type-conversion boost-asio

目前我正在寻找一种将 boost::asio::ip::address_v4() 转换为 字符串 的方法。有办法做到这一点吗?该方法来自 boost website 上的 ipv4_header.hpp

更新:我尝试过boost::asio::ip::address_v4::to_string(ipv4_hdr.source_address()),但没有成功

最佳答案

address_v4 有一个成员函数 to_string .

您调用的函数 boost::asio::ip::address_v4 source_address() const 按值返回一个 address_v4 对象。非静态成员函数必须在对象上调用,因此,您可以在函数返回的对象上调用 to_string():ipv4_hdr.source_address().to_string();。另请注意,成员函数被标记为 const,它允许您在常量对象上调用它。

该错误有两个原因:

  1. to_string() 有两个重载。一个接受零个参数,另一个接受 boost::system::error_code 引用。您试图将 address_v4 对象作为参数传递给 to_string(),这是不正确的(不存在此类重载)。

  2. 语法 boost::asio::ip::address_v4::to_string(...) 仅当 to_string() 是静态时才有效成员函数。由于 to_string() 是一个非静态成员函数,因此您需要 . 点运算符来调用对象实例上的成员函数,即 .to_string().

关于c++ - 将 boost::asio::ip::address_v4 隐藏为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423423/

相关文章:

c++ - 使用 Boost Graph Library 删除顶点后无法删除边

c++ - MongoDB c++ 遗留驱动程序 1.1.2 不工作 - 使用 VS2013、Win 10、boost-1_62 编译

javascript - 将用户的十进制输入与c#十进制金额进行比较

c++ - C++ 隐式转换原语的警告或错误

C++ std::string::assign 工作起来很奇怪

c++ - 为什么我们不能直接使用类模板来推导方法模板?新加坡金融学会

使用类、getline 和 stringstream 进行解析的 C++ 练习

多次调用的C++复制构造函数

C++ boost : Split String

C++ 获取 u8 字符串文字值表示的可移植方法