// <fstream>
// <iosfwd>
typedef basic_filebuf<char, char_traits<char> > filebuf;

filebuf 是一个用来从文件读取内容或将内容写入到文件的流缓存。

  • 在调用成员函数 open 时,filebuf 对象才被关联到一个文件,而不是发生在 filebuf 对象构造的时候。一旦打开,所有在当前对象上进行的输入、输出操作将会反映(Reflect)到关联的文件中。

    filebuf 类的对象可能在内部维护一个中间输入缓存(Intermediate input buffer)及(或)中间输出缓存(Intermediate output buffer),分别被 I/O 操作用来读入或写出字符。当文件内容被填充(即文件大小增大),当显示地(Explicitly)要求同步,或当对象被关闭时,所有缓存才被同步(Synchronized)。

    filebuf 类的对象可以显示地关掉缓存(Unbuffered),只要调用成员函数 pubsetbuf 且两个参数都为 0 。当关闭文件流缓存时,将会使所有 I/O 直接作用于文件,而不会经过一个中间缓存。

    filebuf 是 std::basic_filebuf 类模板的一个实例化(Instantiation),对应的模板参数为:

    模板参数 定义 注解
    charT char 在类模板内部,使用其别名为 char_type 的成员类型。
    traits char_traits<char> 在类模板内部,使用其别名为 traits_type 的成员类型。
  • char_type char
    traits_type char_traits<char>
    int_type int
    pos_type streampos
    off_type streamoff
  • (constructor) 构造对象
    (destructor) 析构对象
    operator= C++11 移动赋值(Move-assignment)
    swap C++11 交换文件缓存

    文件关联(Association)

    open 打开文件
    is_open 检查一个文件是否打开
    close 关闭文件
  • 以下是从基类 basic_streambuf 中继承过来公共成员函数:

    本地化(Locale): 

    pubimbue 激活本地化
    getloc 获取当前本地化

    缓存管理(Buffer management)及定位(Position)

    pubsetbuf 设置缓存数组
    pubseekoff 设置指向相对位置的内部位置指针(Internal position)
    pubseekpos 设置指向绝对位置的内部位置指针
    pubsync 同步(Synchronize)流缓存

    输入函数

    in_avail 获取可读的字符数
    snextc 前进到下一位置且获取字符
    sbumpc 获取当前字符且前进到下一位置
    sgetc 获取当前字符
    sgetn 获取字符序列
    sputbackc 放回一个字符
    sungetc 减小当前位置

    输出函数

    sputc 存储字符到当前位置且增加输出指针
    sputn 输出字符序列
  • 本地化(Locale)

    imbue 激活本地化

    缓存管理(Buffer management)及定位(Positioning)

    setbuf 设置缓存内容
    seekoff 设置指向相对位置内部位置指针
    seekpos 设置指向绝对位置内部位置指针
    sync 同步流缓存

    输入函数

    showmanyc 获取可用字符的个数
    underflow 直接获取字符而不影响当前位置
    uflow 获取字符且增加当前位置
    pbackfail 放回字符且减小当前位置

    输出函数

    xsputn 放置字符序列
    overflow 直接放置字符而不影响当前位置
  • std::swap C++11 交换对象的内容