我有一个流缓冲区,我需要发送 n 个我知道存在的数据(从 writer 那里获取) 我可以使用 belo 语法:
streambuf b;
chat mybuf[1024]
std::istream is(&b);
is.read(mybuf,500);
我就是这样复制数据的。我只想获取指针并避免复制数据。我想发送如下:
asio::tcp::socket socket_;
socket_->send(
有没有办法驱动 streambuf
并使用 protected gptr
和 `gbum,这是一个好方法吗?
我需要做什么?
最佳答案
boost::asio::streambuf
只不过是缓冲队列。使用 streambuf::data()
.它返回一个缓冲区列表 committed缓冲区。发送/写入成功后使用streambuf::consume(size_t)
删除/重用缓冲区。
streambuf b;
size_t size;
size= read( _socket, b.prepare( 1024 ) );
b.commit( size ); // after this function you may call read again
size= write( socket_, b.data() ); // you can check size() if there is anything
b.consume(size); // remove size bytes from data() buffers
关于c++ - 我如何从 boost::streambuf 读取指针数据但没有复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597187/