定义于头文件 <ios>
template< class CharT, |
类 std::basic_ios 提供设施,以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对象能指涉一个实际的 std::basic_streambuf 对象。
继承图
还提供了两个对常见的字符类型的特化:
类型 | 定义 |
ios | basic_ios<char> |
wios | basic_ios<wchar_t> |
公开成员函数
构造对象
std::basic_ios<CharT,Traits>::basic_ios
protected: | (1) | |
public: | (2) | |
private: | (3) | (C++11 前) |
public: | (C++11 起) |
构造新的 basic_ios
对象。
1) 默认构造函数。不初始化内部状态。必须在首次使用对象或析构函数前调用 init() ,否则行为未定义。
2) 以调用init(sb) 初始化内部状态。设置关联流缓冲为 sb
。
3) C++11 前复制构造函数声明为 private:
且不定义,而在 C++11 中声明为被删除: I/O 流非可复制构造 (CopyConstructible) 。
参数
sb | - | 要关联的流缓冲 |
析构对象
std::basic_ios<CharT,Traits>::~basic_ios
virtual ~basic_ios(); |
销毁 basic_ios
对象。不进行 rdbuf
上的操作,不销毁它。
注意
此析构函数为 virtual
,因为其基类析构函数 ios_base::~ios_base 为虚。
复制赋值运算符被删除
operator=
受保护成员函数
初始化一个默认构造的std::basic_ios
std::basic_ios<CharT,Traits>::init
protected: |
设置关联流缓冲为 sb
并初始化内部状态。
后置条件如下:
元素 | 值 |
---|---|
rdbuf() | sb |
tie() | 空指针 |
rdstate() | 若 sb 不是空指针, 则为 goodbit ,否则为 badbit |
exceptions() | goodbit |
flags() | skipws | dec |
width() | 0 |
precision() | 6 |
fill() | widen(' ') |
getloc() | std::locale() 所返回的值的副本 |
此成员函数为受保护:一旦知晓实际缓冲区类型,则它为派生流类 std::basic_istream 和 std::basic_ostream 的构造函数所调用。直至调用此函数前,默认构造的 std::basic_ios 每个成员函数(包括析构函数)都引发未定义行为。注意 basic_ios
是虚基类,从而其构造函数不为直接派生类的构造函数所调用,此乃二阶段初始化为必须的原因。
参数
sb | - | 要关联到的流缓冲 |
从另一 std::basic_ios 移动,除了 rdbuf
std::basic_ios<CharT,Traits>::move
protected: | (C++11 起) | |
protected: | (C++11 起) |
以 other
的状态替换当前状态,除了关联的 rdbuf
。调用后 other
在合法,但未指定的状态。调用此函数后, rdbuf() 返回 NULL ,而 other.rdbuf() 返回与调用前相同的值,且 other.tie() 返回 0 。
此成员函数受保护:它为导出流类 std::basic_ostream 和 std::basic_istream 的受保护移动构造函数所调用,进而为进一步导出流类,如 std::basic_ofstream 的公开移动构造函数所调用,它们知道如何正确地移动关联流缓冲。
参数
other | - | 转移状态来源的 basic_ios 对象 |
返回值
(无)
与另一 std::basic_ios 交换,除了 rdbuf
std::basic_ios<CharT,Traits>::swap
protected: | (C++11 起) |
交换 *this 与 other
的状态,除了关联的 rdbuf
对象。 rdbuf() 和 other.rdbuf() 返回与调用前相同的值。
此 swap 函数受保护:它为导出的流类,如 std::basic_ofstream 或 std::basic_istringstream 的成员函数所调用,它们知道如何正确地交换关联的流缓冲。
参数
other | - | 要与之交换状态的 basic_ios 对象 |
返回值
(无)
替换 rdbuf 而不清除其错误状态
std::basic_ios<CharT,Traits>::set_rdbuf
protected: |
设置关联流缓冲为 sb
而不清除错误状态。
此成员函数受保护:它为导出流,如 std::basic_ofstream 或 std::basic_istringstream 的移动构造函数所调用,作为构造基类和移动流缓冲后的最终步骤:只有最终导出流类知道如何正确移动流缓冲,但需要令 std::basic_ios 意识到流的新位置,使得其公开成员函数能访问它。
参数
sb | - | 要访问的流缓冲 |
返回值
(无)
异常
(无)