public member function
<fstream>

std::ofstream::ofstream

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

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

参数

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

如果模式同时设置了 truncapp,则打开操作失败。如果同时设置了 appin,也会失败。
如果模式同时设置了 truncapp,则打开操作失败。
x
一个 ofstream 对象,其值被移动。

示例

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

int main () {

  std::ofstream ofs ("test.txt", std::ofstream::out);

  ofs << "lorem ipsum";

  ofs.close();

  return 0;
}

数据竞争

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

异常安全

-

另见