C++语言程序设计

文件打开方式由下面几种：

| 表12-7

ios::in | 打开一个输入文件，用这个标志作为ifstream的打开方式，以防止截断一个现成的文件
ios::out | 打开一个输出文件，当用于一个没有ios::app、ios::ate或ios::in的ofstream时，ios::trunc被隐含
ios::app | 以追加的方式打开一个输出文件
ios::ate | 打开一现成文件（不论是输入还是输出）并寻找末尾
ios::nocreate | 仅打开一个存在的文件（否则失败）
ios::noreplace | 仅打开一个不存在的文件（否则失败）
ios::trunc | 如果一个文件存在，打开它并删除旧的文件
ios::binary | 打开一个二进制文件，缺省的是文本文件

这些标志可以通过逐位或（|）运算来连接。
ios类中定义的文件打开方式：

| 程序12-15

// stream operation mode
enum open_mode {
in = 0x01, // open for reading
out = 0x02, // open for writing
ate = 0x04, // seek to eof upon original open
app = 0x08, // append mode: all additions at eof
trunc = 0x10, // truncate file if already exists
nocreate = 0x20, // open fails if file doesn't exist
noreplace= 0x40, // open fails if file already exists
binary = 0x80 // binary (not text) file
};

它们可以用逐位或（|）运算符来连接。例如，下面的语句用来打开一个文件用于输出，并确保它以前是不存在的：
ofstream outfile("outfile", ios::out|ios::noreplace);
当文件打开失败时，文件流对象的bad标志会置位。可以使用ios类成员函数clear清除标志位，然后重新操作。