我正在尝试实现一个带有boost :: const_buffer并在循环中迭代其字节的函数。我看到有一个缓冲区迭代器,但似乎适用于boost :: asio :: buffers_type。我没有找到任何简单遍历缓冲区的例子。
那么,它是通过buffer_cast访问缓冲区到char *等本机类型然后通过传统方法遍历它的标准方法吗?或者有没有直接帮助函数来做到这一点?
答案 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));
}