basic_fstream 类

描述一个对象,该对象使用类 basic_filebuf<Elem, Tr> 的流缓冲区来控制元素和编码对象的插入和提取,该流缓冲区具有 Elem 类型的元素,其字符特征由类 Tr 确定。

语法

template <class Elem, class Tr = char_traits<Elem>>
class basic_fstream : public basic_iostream<Elem, Tr>

参数

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

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

备注

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

注意

fstream 对象的 get 指针和 put 指针相互独立。 如果 get 指针移动,put 指针也将移动。

示例

下面的示例演示如何创建能够对其进行读取和写入的 basic_fstream 对象。

// basic_fstream_class.cpp
// compile with: /EHsc

#include <fstream>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    fstream fs("fstream.txt", ios::in | ios::out | ios::trunc);
    if (!fs.bad())
    {
        // Write to the file.
        fs << "Writing to a basic_fstream object..." << endl;
        fs.close();

        // Dump the contents of the file to cout.
        fs.open("fstream.txt", ios::in);
        cout << fs.rdbuf();
        fs.close();
    }
}
Writing to a basic_fstream object...

构造函数

构造函数 说明
basic_fstream 构造 basic_fstream 类型的对象。

成员函数

成员函数 说明
close 关闭文件。
is_open 确定文件是否打开。
open 打开文件。
rdbuf 将指针类型的已存储流缓冲区的地址返回到 basic_filebuf<Elem, Tr>。
swap 将此对象的内容与另一个 basic_fstream 对象的内容进行交换。

要求

标头:<fstream>

命名空间: std

basic_fstream::basic_fstream

构造 basic_fstream 类型的对象。

basic_fstream();

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

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

basic_fstream(basic_fstream&& right);

参数

_Filename
要打开的文件的名称。

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

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

注解

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

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

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

示例

有关使用 basic_fstream 的示例,请参阅 streampos

basic_fstream::close

关闭文件。

void close();

注解

成员函数调用 rdbuf- > close。

示例

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

basic_fstream::is_open

确定文件是否打开。

bool is_open() const;

返回值

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

注解

此成员函数返回 rdbuf->is_open

示例

有关如何使用 is_open 的示例,请参阅 basic_filebuf:: is_open

basic_fstream::open

打开文件。

void open(
    const char* _Filename,
    ios_base::openmode _Mode = ios_base::in | 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::in | 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 如果该函数返回一个空指针,则该函数调用 setstate( failbit)。

示例

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

basic_fstream::operator=

从指定的流对象向该对象分配内容。 这是涉及不会留下副本的右值的移动赋值运算符。

basic_fstream& operator=(basic_fstream&& right);

参数

right
basic_fstream 对象的左值引用。

返回值

返回 *this

注解

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

basic_fstream::rdbuf

将指针类型的已存储流缓冲区的地址返回到 basic_filebuf<Elem, Tr>。

basic_filebuf<Elem, Tr> *rdbuf() const

返回值

已存储流缓冲区的地址。

示例

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

basic_fstream::swap

交换两个 basic_fstream 对象的内容。

void swap(basic_fstream& right);

参数

right
basic_fstream 对象的 lvalue 引用。

备注

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

另请参阅

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