标准库标头 <streambuf>
来自cppreference.com
此头文件是输入/输出库的一部分。
类 | |
| 抽象原生设备 (类模板) | |
streambuf
|
std::basic_streambuf<char>(typedef) |
wstreambuf
|
std::basic_streambuf<wchar_t>(typedef) |
概要
namespace std {
template<class CharT, class Traits = char_traits<CharT>>
class basic_streambuf;
using streambuf = basic_streambuf<char>;
using wstreambuf = basic_streambuf<wchar_t>;
}
类模板 std::basic_streambuf
namespace std {
template<class CharT, class Traits = char_traits<CharT>>
class basic_streambuf {
public:
using char_type = CharT;
using int_type = typename Traits::int_type;
using pos_type = typename Traits::pos_type;
using off_type = typename Traits::off_type;
using traits_type = Traits;
virtual ~basic_streambuf();
// 本地环境
locale pubimbue(const locale& loc);
locale getloc() const;
// buffer and positioning
basic_streambuf* pubsetbuf(char_type* s, streamsize n);
pos_type pubseekoff(off_type off, ios_base::seekdir way,
ios_base::openmode which
= ios_base::in | ios_base::out);
pos_type pubseekpos(pos_type sp,
ios_base::openmode which
= ios_base::in | ios_base::out);
int pubsync();
// 读取和写入区域
// 读取区域
streamsize in_avail();
int_type snextc();
int_type sbumpc();
int_type sgetc();
streamsize sgetn(char_type* s, streamsize n);
// 回放
int_type sputbackc(char_type c);
int_type sungetc();
// 写入区域
int_type sputc(char_type c);
streamsize sputn(const char_type* s, streamsize n);
protected:
basic_streambuf();
basic_streambuf(const basic_streambuf& rhs);
basic_streambuf& operator=(const basic_streambuf& rhs);
void swap(basic_streambuf& rhs);
// 读取区域访问
char_type* eback() const;
char_type* gptr() const;
char_type* egptr() const;
void gbump(int n);
void setg(char_type* gbeg, char_type* gnext, char_type* gend);
// 写入区域访问
char_type* pbase() const;
char_type* pptr() const;
char_type* epptr() const;
void pbump(int n);
void setp(char_type* pbeg, char_type* pend);
// 虚函数
// 本地环境
virtual void imbue(const locale& loc);
// buffer management and positioning
virtual basic_streambuf* setbuf(char_type* s, streamsize n);
virtual pos_type seekoff(off_type off, ios_base::seekdir way,
ios_base::openmode which
= ios_base::in | ios_base::out);
virtual pos_type seekpos(pos_type sp,
ios_base::openmode which
= ios_base::in | ios_base::out);
virtual int sync();
// 读取区域
virtual streamsize showmanyc();
virtual streamsize xsgetn(char_type* s, streamsize n);
virtual int_type underflow();
virtual int_type uflow();
// 回放
virtual int_type pbackfail(int_type c = Traits::eof());
// 写入区域
virtual streamsize xsputn(const char_type* s, streamsize n);
virtual int_type overflow(int_type c = Traits::eof());
};
}
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
|---|---|---|---|
| LWG 56 | C++98 | 概要中 showmanyc 的返回类型是 int
|
修改成 streamsize
|