Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

streambuf

basic_streambuf 的典型用法定义的类型别名。

typedef basic_streambuf streambuf;
类型

名称

描述

const_buffers_type

用于将输入序列表示为缓冲区列表的类型。

mutable_buffers_type

用于将输出序列表示为缓冲区列表的类型。

成员函数

名称

描述

basic_streambuf [构造函数]

构造一个 basic_streambuf 对象。

capacity

获取 basic_streambuf 的当前容量。

commit

将字符从输出序列移动到输入序列。

consume

从输入序列中移除字符。

data

获取表示输入序列的缓冲区列表。

max_size

获取 basic_streambuf 的最大大小。

prepare

获取表示输出序列的缓冲区列表,具有给定的大小。

size

获取输入序列的大小。

保护成员函数

名称

描述

overflow

重写 std::streambuf 行为。

reserve

underflow

重写 std::streambuf 行为。

basic_streambuf 类派生自 std::streambuf,用于将 streambuf 的输入和输出序列与一个或多个字符数组关联。这些字符数组是 basic_streambuf 对象内部的,但提供对数组元素的直接访问,以允许它们与 I/O 操作高效地使用。写入 basic_streambuf 对象的输出序列的字符会附加到同一对象的输入序列中。

basic_streambuf 类的公共接口旨在允许以下实现策略

basic_streambuf 的构造函数接受一个 size_t 参数,指定输入序列和输出序列大小之和的最大值。 在 basic_streambuf 对象的生命周期内,以下不变量成立

size() <= max_size()

任何成员函数,如果成功,将导致违反不变量,则应抛出 std::length_error 类的异常。

basic_streambuf 的构造函数接受一个 Allocator 参数。 此参数的副本用于构造函数以及所有成员函数在每个 basic_streambuf 对象的生命周期内执行的任何内存分配。

示例

直接从 streambuf 写入套接字

boost::asio::streambuf b;
std::ostream os(&b);
os << "Hello, World!\n";

// try sending some data in input sequence
size_t n = sock.send(b.data());

b.consume(n); // sent data is removed from input sequence

直接从套接字读取到 streambuf 中

boost::asio::streambuf b;

// reserve 512 bytes in output sequence
boost::asio::streambuf::mutable_buffers_type bufs = b.prepare(512);

size_t n = sock.receive(bufs);

// received data is "committed" from output sequence to input sequence
b.commit(n);

std::istream is(&b);
std::string s;
is >> s;
要求

头文件: boost/asio/streambuf.hpp

便捷头文件: boost/asio.hpp


PrevUpHomeNext