public member function
<fstream>

std::basic_fstream::basic_fstream

默认 (1)
basic_fstream();
initialization (2)
explicit basic_fstream (const char* filename,                        ios_base::openmode mode = ios_base::in | ios_base::out);
默认 (1)
basic_fstream();
initialization (2)
explicit basic_fstream (const char* filename,                        ios_base::openmode mode = ios_base::in | ios_base::out);explicit basic_fstream (const string& filename,                        ios_base::openmode mode = ios_base::in | ios_base::out);
copy (3)
basic_fstream (const basic_fstream&) = delete;
move (4)
basic_fstream (basic_fstream&& x);
构造对象
构造一个 basic_fstream 对象

(1) 默认构造函数
构造一个不与任何文件关联的 basic_fstream 对象。
在内部,其 basic_iostream 基类构造函数会接收一个指向新构造的 basic_filebuf 对象(内部文件流缓冲区)的指针。
(2) 初始化构造函数
构造一个 basic_fstream 对象,该对象最初与由其第一个参数 (filename) 标识的文件关联,并以 mode 指定的模式打开。
在内部,其 basic_iostream 基类构造函数会接收一个指向新构造的 basic_filebuf 对象(内部文件流缓冲区)的指针。然后,使用 filenamemode 作为参数调用 basic_filebuf::open
如果文件无法打开,则设置流的failbit标志。
(3) 复制构造函数 (已删除)
已删除 (无复制构造函数)。
(4) 移动构造函数
获取 x 的内容。
首先,该函数从 x 移动构造其基类 basic_iostream 类以及 x 的内部 basic_filebuf 对象,然后通过调用成员函数 set_rdbuf 将它们关联起来。
x 处于未指定但有效的状态。
内部的 basic_filebuf 对象至少具有与 basic_fstream 对象相同的生命周期。

参数

filename
代表要打开的文件名的字符串。
有关其格式和有效性的具体说明取决于库实现和运行环境。
mode
描述文件请求的输入/输出模式的标志。
这是一个位掩码成员类型 openmode 的对象,由以下成员常量的组合构成:
成员常量代表access
in输入文件以读模式打开:内部流缓冲区支持输入操作。
下可用的类型输出文件以写模式打开:内部流缓冲区支持输出操作。
binarybinary操作以二进制模式执行,而非文本模式。
ate在末尾输出位置从文件末尾开始。
appappend (追加)所有输出操作都在文件末尾进行,追加到其现有内容。
trunctruncate (截断)文件打开前存在的任何内容都将被丢弃。
这些标志可以通过按位或运算符(|)组合。

如果模式同时设置了 truncapp,则打开操作失败。如果仅设置了其中一个但未设置 out,或者同时设置了 appin,则也失败。
如果模式同时设置了 truncapp,则打开操作失败。如果设置了 trunc 但未设置 out,操作也会失败。
x
一个具有相同类型(具有相同的类模板参数 charTtraits)的 basic_fstream 对象,其值被移动。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
// fstream constructor.
#include <fstream>      // std::fstream

int main () {

  std::fstream fs ("test.txt", std::fstream::in | std::fstream::out);

  // i/o operations here

  fs.close();

  return 0;
}

数据竞争

移动构造函数 (4) 会修改 x

异常安全

-

另见