use*_*957 15 c++ buffer boost streambuf boost-asio
我正在使用此代码进行阅读
  socket_.async_read_some(boost::asio::buffer(data_, max_length),
        boost::bind(&session::handle_read, this,
        boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));
Run Code Online (Sandbox Code Playgroud)
这是为了写作
boost::asio::async_write(socket_,
    boost::asio::buffer(data_, bytes_transferred),
    boost::bind(&session::handle_write, this,
    boost::asio::placeholders::error));
Run Code Online (Sandbox Code Playgroud)
其中socket_是socket,max_length是枚举,值为1024,data_是char数组,长度为max_length.
但我想用streambuf替换char数组缓冲区.我试过了
  boost::asio::streambuf streamBuffer;
  socket_.async_read_some(boost::asio::buffer(streamBuffer),
        boost::bind(&session::handle_read, this,
        boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));
Run Code Online (Sandbox Code Playgroud)
但是没有用.我该怎么做 ?
Fra*_*ser 16
你需要得到一个mutable_buffers_type来自streambuf用作你的第一个参数async_read_some.
  boost::asio::streambuf streamBuffer;
  boost::asio::streambuf::mutable_buffers_type mutableBuffer =
      streamBuffer.prepare(max_length);
  socket_.async_read_some(boost::asio::buffer(mutableBuffer),
        boost::bind(&session::handle_read, this,
        boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           11822 次  |  
        
|   最近记录:  |