为 basic_streambuf
的典型用法定义的类型别名。
typedef basic_streambuf streambuf;
名称 |
描述 |
---|---|
用于将输入序列表示为缓冲区列表的类型。 |
|
用于将输出序列表示为缓冲区列表的类型。 |
名称 |
描述 |
---|---|
basic_streambuf [构造函数] |
构造一个 basic_streambuf 对象。 |
获取 basic_streambuf 的当前容量。 |
|
将字符从输出序列移动到输入序列。 |
|
从输入序列中移除字符。 |
|
获取表示输入序列的缓冲区列表。 |
|
获取 basic_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