2013-07-02 61 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()

相關問題