2017-07-31 94 views
1

我想實現一個函數,它需要一個boost :: const_buffer並遍歷一個循環中的字節。我看到有一個緩衝區迭代器,但它似乎適用於boost :: asio :: buffers_type。我沒有找到任何簡單的遍歷緩衝區的例子。boost :: asio :: buffer如何遍歷字節

那麼,它是通過buffer_cast訪問緩衝區到像char *這樣的本機類型並通過傳統方法遍歷緩衝區的標準方式嗎?還是有任何直接的幫手功能來做到這一點?

回答

1

boost::asio::buffer_cast<>

#include <boost/asio.hpp> 
#include <string> 
#include <iostream> 
#include <algorithm> 
#include <iterator> 

namespace asio = boost::asio; 

void test(asio::const_buffer const& buffer) 
{ 
    auto first = asio::buffer_cast<const char*>(buffer); 
    auto last = first + asio::buffer_size(buffer); 

    std::copy(first, last, std::ostream_iterator<char>(std::cout)); 
    std::cout << std::endl; 
} 

int main() 
{ 
    std::string s = "hello"; 

    test(asio::buffer(s)); 
} 
+0

OK,所以基本上提取原始數據,並遍歷它。 –

+0

@MupparthyRavindranath是的,'const_buffer'是一個單字節緩衝區。 'const_buffers_1'是包含1個緩衝區(其'end()'等於它的'begin()+ 1')的'ConstBufferSequence'概念的模型。 「ConstBufferSequence」是N個「const_buffer」的序列 –