// <fstream>
template < class charT, class traits = char_traits<charT> > class basic_filebuf;

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

  • charT

    字符类型。

    必须是一个非数组的(Non-array) C 型类型(POP type)。

    在类模板内部,使用其别名为 char_type 的成员类型。

    traits

    字符属性类,定义了被流对象所使用的字符的本质特征。

    traits::char_type 必须跟 charT 一致。

    在类模板内部,使用其别名为 traits_type 的成员类型。

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

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

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

  • char_type 第一个模板参数(charT
    traits_type 第二个模板参数(traits
    int_type traits_type::int_type
    pos_type traits_type::pos_type
    off_type traits_type::off_type
  • (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 交换对象的内容