定义于头文件 <ostream>
template< class CharT, |
类模板 basic_ostream
提供字符流上的高层输出操作。受支持操作包含有格式输出(例如整数值)和无格式输出(例如生字符和字符数组)。此功能以 basic_streambuf
类所提供的接口实现,通过 basic_ios
基类访问。典型的实现中, basic_ostream
无非继承的数据成员。
成员函数
构造对象
std::basic_ostream<CharT,Traits>::basic_ostream
explicit basic_ostream( std::basic_streambuf<CharT, Traits>* sb ); | (1) | |
protected: | (2) | (C++11 起) |
protected: | (3) | (C++11 起) |
1) 构造 basic_ostream
对象,通过调用 basic_ios::init(sb) 赋初值给基类。
2) 复制构造函数被删除。输出流不可复制。
3) 移动构造函数用 basic_ios<CharT, Traits>::move(rhs)
从 rhs
移动所有 basic_ios ,除了 rdbuf()
到 *this
中。此移动构造函数受保护:它为可移动输出流类 std::basic_ofstream 和 std::basic_ostringstream 的移动构造函数所调用,它们知道如何正确地移动关联的流缓冲。
参数
sb | - | 用作输出序列的流缓冲 |
rhs | - | 初始化来源的 basic_ostream |
析构对象
std::basic_ostream<CharT,Traits>::~basic_ostream
virtual ~basic_ostream(); |
销毁 basic_ostream
对象。此析构函数不进行底层流缓冲( rdbuf()
)上的任何操作:导出输出流,如 std::basic_ofstream 与 std::basic_ostringstream 的析构函数负责调用流缓冲的析构函数。
调用示例
#include <sstream>
#include <iostream>
void add_words(std::streambuf* p)
{
std::ostream buf(p); // buf 与 s 共享缓冲
buf << " is the answer";
} // 调用 buf 的析构函数。 p 保持不受影响。
int main()
{
std::ostringstream s;
s << 42;
add_words(s.rdbuf());
s << ".";
std::cout << s.str() << '\n';
}
输出
从另一 basic_ostream 移动赋值
std::basic_ostream<CharT,Traits>::operator=
1) 复制赋值运算符为被保护,企鹅杯删除。输出流不可复制赋值 (CopyAssignable) 。
2) 移动赋值运算符如同以调用 swap(*rhs) 与 rhs
交换基类的所有数据成员,除了 rdbuf()
。此移动赋值运算符为受保护:它只为导出可移动输出流类 std::basic_ofstream 和 std::basic_ostringstream 的移动赋值运算符所调用,它们知道如何正确移动赋值关联的流缓冲。
参数
rhs | - | 要赋值给 *this 的 basic_ostream 对象 |