basic_ofstream

描述一个对象,该对象可控制将元素和编码对象插入到 basic_filebuf< Elem, Tr> 类的流缓冲区的操作,其中 Elem 类型的元素的字符特征由 Tr 类确定。 有关详细信息,请参阅 basic_filebuf

语法

template <class Elem, class Tr = char_traits<Elem>>
class basic_ofstream : public basic_ostream<Elem, Tr>

参数

Elem
文件缓冲区的基本元素。

Tr
文件缓冲区的基本元素的特征(通常是 char_traits<Elem>)。

备注

当将 basic_ofstreamwchar_t 专用化写入文件时,如果在文本模式下打开该文件,则它将编写 MBCS 序列。 内部表示形式将使用 wchar_t 字符的缓冲区。

该对象存储 basic_filebuf< Elem, Tr> 类的对象。

示例

下面的示例演示了如何创建 basic_ofstream 对象和向其写入文本。

// basic_ofstream_class.cpp
// compile with: /EHsc
#include <fstream>

using namespace std;

int main(int argc, char **argv)
{
    ofstream ofs("ofstream.txt");
    if (!ofs.bad())
    {
        ofs << "Writing to a basic_ofstream object..." << endl;
        ofs.close();
    }
}

构造函数

构造函数 说明
basic_ofstream 创建一个 basic_ofstream 类型的对象。

成员函数

成员函数 说明
close 关闭文件。
is_open 确定文件是否打开。
open 打开文件。
rdbuf 返回存储的流缓冲区的地址。
swap 将此 basic_ofstream 的内容与提供的 basic_ofstream 的内容进行交换。

运算符

运算符 说明
operator= 分配此流对象的内容。 这是一种移动赋值,所涉及的 rvalue reference 不会留下副本。

要求

标头<fstream>

命名空间std

basic_ofstream::basic_ofstream

创建一个 basic_ofstream 类型的对象。

basic_ofstream();

explicit basic_ofstream(
    const char* _Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot);

explicit basic_ofstream(
    const wchar_t* _Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot);

basic_ofstream(
    basic_ofstream&& right);

参数

_Filename
要打开的文件的名称。

_Mode
ios_base::openmode 中的枚举之一。

_Prot
默认文件打开保护,等同于 _fsopen_wfsopen 中的 shflag 参数。

right
basic_ofstream 对象的右值引用用于初始化此 basic_ofstream 对象。

注解

第一个构造函数通过调用 basic_ostream(sb) 初始化基类,其中 sbbasic_filebuf< Elem, Tr> 类的存储对象。 它还可以通过调用 basic_filebuf<Elem, Tr> 来初始化 sb

通过调用 basic_ostream( sb),第二个和第三个构造函数可初始化基类。 它还可以通过调用 basic_filebuf<Elem, Tr>,然后 sb.open( _Filename, _Mode | ios_base::out) 来初始化 sb。 如果后一个函数返回一个 NULL 指针,构造函数将调用 setstate(failbit)

第四个构造函数是一个 copy 函数。 它可以初始化具有 right 的内容的对象,将其视为右值引用。

有关详细信息,请参阅basic_ostreamopensetstate

示例

下面的示例演示了如何创建 basic_ofstream 对象和向其写入文本。

// basic_ofstream_ctor.cpp
// compile with: /EHsc
#include <fstream>

using namespace std;

int main(int argc, char **argv)
{
    ofstream ofs("C:\\ofstream.txt");
    if (!ofs.bad())
    {
        ofs << "Writing to a basic_ofstream object..." << endl;
        ofs.close();
    }
}

basic_ofstream::close

关闭文件。

void close();

备注

此成员函数调用 rdbuf->close。 有关详细信息,请参阅 rdbufclose

示例

有关使用 close 的示例,请参阅 basic_filebuf::close

basic_ofstream::is_open

指示文件是否打开。

bool is_open() const;

返回值

如果文件已打开,则为 true,否则为 false

备注

成员函数返回 rdbuf->is_open。 有关详细信息,请参阅 rdbufis_open

示例

// basic_ofstream_is_open.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main( )
{
   using namespace std;
   ifstream file;
   // Open and close with a basic_filebuf
   file.rdbuf( )->open( "basic_ofstream_is_open.txt", ios::in );
   file.close( );
   if (file.is_open())
      cout << "it's open" << endl;
   else
      cout << "it's closed" << endl;
}

basic_ofstream::open

打开文件。

void open(
    const char* _Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot);

void open(
    const char* _Filename,
    ios_base::openmode _Mode);

void open(
    const wchar_t* _Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot);

void open(
    const wchar_t* _Filename,
    ios_base::openmode _Mode);

参数

_Filename
要打开的文件的名称。

_Mode
ios_base::openmode 中的枚举之一。

_Prot
默认文件打开保护,等同于 _fsopen_wfsopen 中的 shflag 参数。

备注

此成员函数调用 rdbuf -> open(_ Filename, _Mode | ios_base::out)。 如果该函数返回一个 NULL 指针,则该函数调用 setstate(failbit)

有关详细信息,请参阅rdbufopensetstate

示例

有关使用 open 的示例,请参阅 basic_filebuf::open

basic_ofstream::operator=

分配此流对象的内容。 这是一种移动赋值,所涉及的 rvalue reference 不会留下副本。

basic_ofstream& operator=(basic_ofstream&& right);

参数

right
basic_ofstream 对象的右值引用。

返回值

返回 *this

备注

成员运算符使用 right 内容替换该对象的内容,被视为右值引用。

basic_ofstream::rdbuf

返回存储的流缓冲区的地址。

basic_filebuf<Elem, Tr> *rdbuf() const

返回值

返回存储的流缓冲区的地址。

示例

有关使用 rdbuf 的示例,请参阅 basic_filebuf::close

basic_ofstream::swap

交换两个 basic_ofstream 对象的内容。

void swap(basic_ofstream& right);

参数

right
对另一个 basic_ofstream 对象的 lvalue 引用。

注解

此成员函数将此对象的内容与 right 的内容进行交换。

另请参阅

basic_ostream
C++ 标准库中的线程安全
iostream 编程
iostreams 约定