boost :: asio :: buffer如何迭代字节

时间:2017-07-31 14:57:04

标签: c++ boost boost-asio

我正在尝试实现一个带有boost :: const_buffer并在循环中迭代其字节的函数。我看到有一个缓冲区迭代器,但似乎适用于boost :: asio :: buffers_type。我没有找到任何简单遍历缓冲区的例子。

那么,它是通过buffer_cast访问缓冲区到char *等本机类型然后通过传统方法遍历它的标准方法吗?或者有没有直接帮助函数来做到这一点?

1 个答案:

答案 0 :(得分:2)

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));
}