// <sstream>
template < class charT,
    class traits = char_traits<charT>,
    class Alloc = allocator<charT>
> class basic_stringbuf;

basic_stringbuf 是一个用来从字符串中读取内容或将内容写入到字符串的流缓存。

  • char_type 第一个模板参数(charT
    traits_type 第二个模板参数(traits
    allocator_type 第三个模板参数(Alloc
    int_type traits_type::int_type
    pos_type traits_type::pos_type
    off_type traits_type::off_type
  • basic_stringbuf 类的对象在内部维护了一个字符序列,该序列被用来作为流缓存对象的关联输入序列(Associated input sequence)及(或)关联输入序列(Associated output sequence)。这个内部序列可以从一个 std::basic_string 对象中初始化而来,或者使用成员函数 str 互相拷贝。

  • char_type 第一个模板参数(charT
    traits_type 第二个模板参数(traits
    allocator_type 第三个模板参数(Alloc
    int_type traits_type::int_type
    pos_type traits_type::pos_type
    off_type traits_type::off_type
  • (constructor) 构造对象
    str 获取或设置字符串内容
  • 以下是从基类 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 输出字符序列
  • 缓存管理(Buffer management)及定位(Positioning)

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

    输入函数

    underflow 直接获取字符而不影响当前位置
    pbackfail 放回字符且减小当前位置

    输出函数

    overflow 直接放置字符而不影响当前位置