定义于头文件 <streambuf>
template< class CharT, |
类 basic_streambuf
控制字符序列的输入与输出。它包含下列内容并提供到它们的访问:
1) 受控制字符序列,又称为缓冲区,它可含有为输入操作缓冲的输入序列(又称为获取区),和/或为输出操作缓冲的输出序列(又称为放置区)。
2) 关联字符序列,又称作源(对于输入)或池(对于输出)。它可以是通过 OS API 访问的实体(文件、 TCP 接头、串行端口、其他字符设备),或者可以是能转译成字符源或池的对象( std::vector 、数组、字符串字面量)。
I/O 流对象 std::basic_istream 及 std::basic_ostream ,还有所有导出自它们的对象( std::ofstream 、 std::stringstream 等),都完全以 std::basic_streambuf 实现。
成员函数
寻位
调用 setbuf()
std::basic_streambuf<CharT,Traits>::pubsetbuf,
std::basic_streambuf<CharT,Traits>::setbuf
basic_streambuf<CharT, Traits>* pubsetbuf( char_type* s, std::streamsize n ) | (1) | |
protected: | (2) |
1) 调用最终导出类上的 setbuf(s, n)
2) 此函数的基类版本无效果。导出类可覆写此函数,以允许移除或替换受控制字符序列(缓冲区)为用户提供的数组,或为任何实现特定的目的。
参数
s | - | 指向用户提供的缓冲区中首个 CharT 的指针 |
n | - | 用户提供缓冲区中的 CharT 元素数 |
返回值
1) setbuf(s, n)
的返回值
2) this
调用 seekoff()
std::basic_streambuf<CharT,Traits>::pubseekoff,
std::basic_streambuf<CharT,Traits>::seekoff
pos_type pubseekoff( off_type off, std::ios_base::seekdir dir, | (1) | |
protected: virtual pos_type seekoff( off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which = ios_base::in | ios_base::out ); | (2) |
相对某其他位置,设置输入和/或输出序列的位置指示器。
1) 调用最终导出类的 seekoff(off, dir, which)
2) 此函数的基类版本无效果。导出类可覆写此函数以允许位置指示器的相对寻位。
参数
off | - | 要设置位置指示器到的相对位置。 | ||||||||
dir | - | 定义要应用相对偏移到的基位置。它能为下列常量之一:
| ||||||||
which | - | 定义输入和/或输出序列何者有影响。它能为下列常量之一或其组合:
|
注意
并非所有参数组合都可以合法,细节见 seekoff
的导出类版本。
返回值
1) seekoff(off, dir, which)
的返回值
2) 位置指示器所定义的结果绝对位置。基类版本返回 pos_type(off_type(-1)) 。
调用 seekpos()
std::basic_streambuf<CharT,Traits>::pubseekpos,
std::basic_streambuf<CharT,Traits>::seekpos
pos_type pubseekpos( pos_type pos, | (1) | |
protected: virtual pos_type seekpos( pos_type pos, ios_base::openmode which = ios_base::in | ios_base::out); | (2) |
设置输入和/或输出序列的位置指示器为绝对位置。
1) 调用最终导出类的 seekpos(pos, which)
2) 此函数的基类版本无效果。导出类可覆写此函数以允许位置指示器的绝对寻位。
参数
pos | - | 要设置位置指示器到的绝对位置。 | ||||||
which | - | 定义输入和/或输出序列何者有效果。它能为下列常量之一或其组合:
|
返回值
1) seekpos(pos, which)
的返回值
2) 位置指示器所定义的结果绝对位置。基类版本返回 pos_type(off_type(-1)) 。
调用 sync()
std::basic_streambuf<CharT,Traits>::pubsync,
std::basic_streambuf<CharT,Traits>::sync
int pubsync(); | (1) | |
protected: | (2) |
同步受控制字符序列(缓冲区)与关联字符序列。
1) 调用最终导出类的 sync()
2) 此函数的基类版本无效果。导出类可覆写此函数以允许将底层设备与缓冲区同步。
对于输出流,这典型地导致写入放置区的内容到关联序列中,即冲入输出缓冲区。对于输入流,这典型地清空获取区并从关联序列重读取,以拾取最近的更改。默认行为(例如 std::basic_stringbuf 中找到者)不会做任何事。
参数
(无)
返回值
1) sync()
的返回值。
2) 成功时返回 0 ,否则返回 -1 。基类版本返回 0 。