将boost :: asio :: ip :: address_v4转换为字符串

时间:2013-07-02 10:39:12

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

目前,我正在寻找一种将boost::asio::ip::address_v4()转换为string的方法。有没有办法实现这个目标?该方法来自boost website

上的ipv4_header.hpp

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

2 个答案:

答案 0 :(得分:3)

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()

答案 1 :(得分:0)

这有效。

unsigned long ip_lb;
...
ip::address peerIp = ip::address_v4(ip_lb)
cout << peerIp.to_string