目前,我正在寻找一种将boost::asio::ip::address_v4()
转换为string
的方法。有没有办法实现这个目标?该方法来自boost website
更新:我试过了boost::asio::ip::address_v4::to_string(ipv4_hdr.source_address())
,但我没有成功
答案 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
,允许您在常量对象上调用它。
错误有两个原因:
to_string()
有两个重载。一个接受零参数,另一个接受boost::system::error_code
引用。您试图将address_v4
对象作为参数传递给to_string()
,这是不正确的(不存在此类过载)。
语法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