2017-07-31 92 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”的序列 –