2013-07-02 39 views
0

目前我正在寻找一种方法将boost::asio::ip::address_v4()转换为string。有没有办法做到这一点?该方法来自于boost websiteCovert boost :: asio :: ip :: address_v4到字符串

更新的ipv4_header.hpp:我已经试过boost::asio::ip::address_v4::to_string(ipv4_hdr.source_address()),但我没有成功

+2

你需要学习阅读的文档,有一个[to_string()](http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/ip__address_v4/to_string .html)功能。 –

+0

我已经发现,它在文档中是正确的,但它不起作用。我有'boost :: asio :: ip :: address_v4 :: to_string(ipv4_hdr.source_address())'。它给出:'错误:没有重载函数的实例“boost :: asio :: ip :: address_v4 :: to_string”匹配参数列表参数类型是:(boost :: asio :: ip :: address_v4)' – compu92

+2

尝试' ipv4_hdr.source_address()。to_string();' –

回答

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

相关问题