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

basic_istringstream 是一个用于操作字符串的输入流(Input stream)类模板。

  • charT

    字符类型。

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

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

    traits

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

    traits::char_type 必须跟 charT 一致。

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

    Alloc

    对象内部用来管理内存分配及释放的内存分配器的类型。

    这个参数是可选的,它的默认值是 std::allocator<T>,这个是一个最简单的非值依赖的(Value-independent)内存分配器。

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

  • basic_istringstream 类模板的对象在内部维护了一个作为流缓存的 std::stringbuf 对象。std::stringbuf 内部对象包含一个字符序列,该字符序列可以直接作为 std::basic_string 对象来访问,使用成员函数 str 便可获得该 std::basic_string 对象。

    适用于 std::basic_istream 的操作同时适用于当前流,可以使用这些操作以从字符序列中提取字符。

    std::basic_istringstream 继承于基类 std::ios_basestd::basic_ios,所以,当前类模板包含两个基类的公共成员部分:

      范畴 成员函数 介绍
    格式化 格式标志 ios_base::flags
    ios_base::setf
    ios_base::unsetf
    一系列内部标志,这些标志会影响一个特定的输入或输出操作是如何被解释执行或形成的。
    字段(Field)长度 ios_base::width 下一个将要插入的被格式化元素的宽度
    显示精度 ios_base::precision 下一个将要插入的浮点数值的精度
    本地化(Locale) ios_base::getloc
    ios_base::imbue
    std::locale 对象被用于一些函数,这些函数用于被格式化的输入或输出操作,而这些操作受本地化特性影响。
    填充字符 basic_ios::fill 用来填充被格式化字段到指定字段长度(Field width)的字符。
    状态 错误状态 basic_ios::rdstate
    basic_ios::setstate
    basic_ios::clear
    当前流的错误状态。可以通过调用 basic_ios::goodbasic_ios::eofbasic_ios::failbasic_ios::bad 返回各个值。查看成员类型 ios_base::iostate
    异常掩码 basic_ios::exceptions 用来表示具体是哪个失败(Failure)异常被抛出。
    其它 回调栈(Callback stack) ios_base::register_callback 当特定事件发生时,指向将会被调用的函数的指针所组成的栈(Stack)。
    可扩展的数组 ios_base::iword
    ios_base::pword
    ios_base::xalloc
    内部数组相关。
    其它 被绑定的流 basic_ios::tie 指向在每次对当前流进行 I/O 操作之前会被刷新缓存(Flushed)的(另一个)输出流。
    流缓存 basic_ios::rdbuf 指向关联的 streambuf 对象,该对象负责所有的输入、输出操作。
  • 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

    以及从基类 std::ios_base 、 std::basic_ios 及 std::basic_istream 中继承过来的类型:

    event 用来指明事件类型的类型
    event_callback 事件回调函数类型
    fmtflags 用来表示流格式化标志的类型
    iostate 用来表示流状态标志的类型
    openmode 用来表示流打开方式的类型
    seekdir 用来表示流查找方向的类型
    failure 流异常(Exception)基类
    Init 初始化标准流对象(Standard stream object)
    sentry 准备用于输入的流
  • (constructor) 构造对象
    str 获取或设置内容
    rdbuf 获取流缓存
    operator= C++11 移动赋值(Move assignment)
    swap C++11 交换
  • 以下是从基类 basic_istream 中继承过来公共成员函数:

    格式化输入(Formatted input)

    operator>> 提取(Extract)格式化输入

    非格式化输入(Unformatted input)

    gcount 获取字符数
    get 获取字符
    getline 获取一行(Line)字符
    ignore 提取(Extract)及忽略(Discard)字符
    peek 查看下一字符,但不提取(Peek)
    read 读取块数据
    readsome 读取缓存中可用的数据
    putback 放回(Put character)字符
    unget 撤消获取

    位置(Positioning)

    tellg 获取在输入序列中的位置(Input sequence)
    seekg 设置在输入序列中的位置

    同步(Synchronization)

    sync 同步输入缓存
  • 以下是从基类 basic_ios 中继承过来公共成员函数:

    状态标志函数(State flag function)

    good 检测流状态是否良好(Good)
    eof 检测 eofbit 位是否设置
    fail 检测 failbit 位或 badbit 位是否设置
    bad 检测 badbit 位是否设置
    operator! 检测流状态(not,取反),等同于 fail
    operator bool C++11 检测流状态
    rdstate 获得错误状态标志
    setstate 设置错误状态标志
    clear 设置错误状态标志

    格式化(Formatting)

    copyfmt 拷贝格式化信息
    fill 获取或设置填充字符

    其它

    exceptions 获得或设置异常掩码(Exceptions mask)
    imbue 激活本地化特征(Locale)
    tie 获得或设置绑定的流
    rdbuf 获得或设置流缓存
    narrow 获得窄(Narrow)字符
    widen 获得宽(Wide)字符
  • 以下是从基类 ios_base 中继承过来公共成员函数:

    格式化(Formatting):

    flags 获取或设置格式标识
    setf 设置指定的格式标识
    unsetf 清除指定的格式标识
    precision 获取或设置浮点数精度
    width 获取或设置字段宽度

    本地化(Locale):

    imbue 激活本地化特征
    getloc 获得当前本地化特征

    内部可扩展数组(Internal extensible array):

    xalloc 从可扩展数组中获得一个新的索引(Index)
    iword 从可扩展数组中获得一个整数元素
    pword 从可扩展数组中获得一个指针元素

    其它:

    register_callback 注册事件回调函数(Event callback function)
    sync_with_stdio 与 C 型输入输出同步绑定
  • std::swap 交换对象