c++11 标准模板(STL)(std::basic

您所在的位置:网站首页 ofstream赋值 c++11 标准模板(STL)(std::basic

c++11 标准模板(STL)(std::basic

2023-06-18 22:28| 来源: 网络整理| 查看: 265

定义于头文件

template<

    class CharT,     class Traits = std::char_traits

> class basic_ios : public std::ios_base

类 std::basic_ios 提供设施,以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对象能指涉一个实际的 std::basic_streambuf 对象。

继承图

还提供了两个对常见的字符类型的特化:

类型定义iosbasic_ioswiosbasic_ios 公开成员函数  构造对象 std::basic_ios::basic_ios

protected: basic_ios();

(1)

public: explicit basic_ios( std::basic_streambuf* sb );

(2)

private: basic_ios(const basic_ios&);

(3)(C++11 前)

public: basic_ios(const basic_ios& ) = delete;

(C++11 起)

构造新的 basic_ios 对象。

1) 默认构造函数。不初始化内部状态。必须在首次使用对象或析构函数前调用 init() ,否则行为未定义。

2) 以调用init(sb) 初始化内部状态。设置关联流缓冲为 sb 。

3) C++11 前复制构造函数声明为 private: 且不定义,而在 C++11 中声明为被删除: I/O 流非可复制构造 (CopyConstructible) 。

参数 sb-要关联的流缓冲

 

析构对象 std::basic_ios::~basic_ios

virtual ~basic_ios();

销毁 basic_ios 对象。不进行 rdbuf 上的操作,不销毁它。

注意

此析构函数为 virtual ,因为其基类析构函数 ios_base::~ios_base 为虚。

复制赋值运算符被删除 operator=

受保护成员函数 初始化一个默认构造的std::basic_ios std::basic_ios::init

protected: void init( std::basic_streambuf* sb );

设置关联流缓冲为 sb 并初始化内部状态。

后置条件如下:

元素值rdbuf()sbtie()空指针rdstate()若 sb 不是空指针, 则为 goodbit ,否则为 badbitexceptions()goodbitflags()skipws | decwidth()​0​precision()6fill()widen(' ')getloc()std::locale() 所返回的值的副本

此成员函数为受保护:一旦知晓实际缓冲区类型,则它为派生流类 std::basic_istream 和 std::basic_ostream 的构造函数所调用。直至调用此函数前,默认构造的 std::basic_ios 每个成员函数(包括析构函数)都引发未定义行为。注意 basic_ios 是虚基类,从而其构造函数不为直接派生类的构造函数所调用,此乃二阶段初始化为必须的原因。

参数 sb-要关联到的流缓冲

 

从另一 std::basic_ios 移动,除了 rdbuf std::basic_ios::move

protected: void move( basic_ios& other );

(C++11 起)

protected: void move( basic_ios&& other );

(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::swap

protected: void swap( basic_ios& other ) noexcept;

(C++11 起)

交换 *this 与 other 的状态,除了关联的 rdbuf 对象。 rdbuf() 和 other.rdbuf() 返回与调用前相同的值。

此 swap 函数受保护:它为导出的流类,如 std::basic_ofstream 或 std::basic_istringstream 的成员函数所调用,它们知道如何正确地交换关联的流缓冲。

参数 other-要与之交换状态的 basic_ios 对象 返回值

(无)

替换 rdbuf 而不清除其错误状态 std::basic_ios::set_rdbuf

protected: void set_rdbuf( std::basic_streambuf* sb );

设置关联流缓冲为 sb 而不清除错误状态。

此成员函数受保护:它为导出流,如 std::basic_ofstream 或 std::basic_istringstream 的移动构造函数所调用,作为构造基类和移动流缓冲后的最终步骤:只有最终导出流类知道如何正确移动流缓冲,但需要令 std::basic_ios 意识到流的新位置,使得其公开成员函数能访问它。

参数 sb-要访问的流缓冲 返回值

(无)

异常

(无)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3