boost::asio::buffer 如何遍历字节



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

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

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

最新更新