其他分享
首页 > 其他分享> > 文件模式

文件模式

作者:互联网

每个流都有一个关联的文件模式(file mode),用来指出如何使用文件。表8.4列出了文件模式和它们的含义。

image-20210121180711348

无论用哪种方式打开文件,我们都可以指定文件模式,调用open打开文件时可以,用一个文件名初始化流来隐式打开文件时也可以。指定文件模式有如下限制∶

每个文件流类型都定义了一个默认的文件模式,当我们未指定文件模式时,就使用此默认模式。与ifstream关联的文件默认以in 模式打开;与 ofstream关联的文件默认以 out 模式打开;与fstream关联的文件默认以in 和 out 模式打开。

以out模式打开文件会丢失已有数据

默认情况下,当我们打开一个 ofstream 时,文件的内容会被丢弃。阻止一个 ofstream 清空给定文件内容的方法是同时指定 app 模式∶

// 在这几条语句中file1都被截断
ofstream out("file1");                    // 隐含以输出模式打开文件并截断文件                              
ofstream out2("file1", ofstream::out);    // 隐含地截断文件
ofstream out3("file1", ofstream::out | ofstream::trunc);
// 为保留文件内容,我们必须显式指定app模式
ofstream app("file2", ofstream::app);    // 隐含为输出模式
ofstream app2("file2", ofstream::out | ofstream::app);

每次调用open时都会确定文件模式

对于一个给定的流,每次打开文件时,都可以改变文件模式

ofstream out;                            // 未指定文件打开模式
out.open("scratchpad");                  // 模式隐含地设置为输出和截断
out.close();                             // 关闭out,以便用于其他文件
out.open("precious", ofstream::app);     // 模式为输出和追加
out.close();

第一个open调用未显式指定输出模式,文件隐式地以out 模式打开。

通常情况下,out模式意味着同时使用trunc模式。因此,当前目录下名为scratchpad的文件的内容将被清空。

当打开名为 precious 的文件时,我们指定了append模式。文件中已有的数据都得以保留,所有写操作都在文件末尾进行。

标签:文件,ofstream,app,模式,打开,out
来源: https://www.cnblogs.com/lihello/p/14309630.html