fstream 的默认模式
Default mode of fstream
我正在查看 SO post C++ file stream open modes ambiguity。我想知道fstream默认的文件打开方式。其中一个答案说,
What the above implies is that the following code opens the file with
exactly the same open flags fstream f("a.txt", ios_base::in |
ios_base::out); ifstream g("a.txt", ios_base::out); ofstream
h("a.txt", ios_base::in);
因此,如果我理解正确,如果我创建了 fstream 对象,我应该能够读取或写入。
但是下面的代码没有向文件写入任何数据
fstream testFile1;
testFile1.open("text1.txt");
testFile1<<"Writing data to file";
testFile1.close();
但是,如下所示添加模式会创建包含数据的文本文件 "Writing data to file"
testFile1.open("text1.txt", ios::out);
那么默认模式是否是实现定义的?我正在使用 TDM-GCC-64 工具链。
ifstream
的默认模式是in
。 ofstream
的默认模式是 out
。这就是为什么他们这样命名的原因。 fstream
具有 无 默认模式。
您的示例仅显示了两个默认值,并且通过省略显式参数来显示。 fstream f("a.txt", ios_base::in | ios_base::out)
使用两个显式参数正是因为没有默认模式。
std::fstream
s 的默认模式是 std::ios::in|std::ios::out
。 (Source)
您的代码未向 test1.txt
打印任何内容的原因是 std::ios::in|std::ios::out
模式不会创建文件(如果该文件尚不存在)(Source: table on this page)。
可以使用std::ios::in|std::ios::app
方式,从头开始读,从尾开始写,文件不存在则创建。请注意,使用 app
模式,文件将在每次写入 (Source) 之前查找到末尾。
我正在查看 SO post C++ file stream open modes ambiguity。我想知道fstream默认的文件打开方式。其中一个答案说,
What the above implies is that the following code opens the file with exactly the same open flags fstream f("a.txt", ios_base::in | ios_base::out); ifstream g("a.txt", ios_base::out); ofstream h("a.txt", ios_base::in);
因此,如果我理解正确,如果我创建了 fstream 对象,我应该能够读取或写入。
但是下面的代码没有向文件写入任何数据
fstream testFile1;
testFile1.open("text1.txt");
testFile1<<"Writing data to file";
testFile1.close();
但是,如下所示添加模式会创建包含数据的文本文件 "Writing data to file"
testFile1.open("text1.txt", ios::out);
那么默认模式是否是实现定义的?我正在使用 TDM-GCC-64 工具链。
ifstream
的默认模式是in
。 ofstream
的默认模式是 out
。这就是为什么他们这样命名的原因。 fstream
具有 无 默认模式。
您的示例仅显示了两个默认值,并且通过省略显式参数来显示。 fstream f("a.txt", ios_base::in | ios_base::out)
使用两个显式参数正是因为没有默认模式。
std::fstream
s 的默认模式是 std::ios::in|std::ios::out
。 (Source)
您的代码未向 test1.txt
打印任何内容的原因是 std::ios::in|std::ios::out
模式不会创建文件(如果该文件尚不存在)(Source: table on this page)。
可以使用std::ios::in|std::ios::app
方式,从头开始读,从尾开始写,文件不存在则创建。请注意,使用 app
模式,文件将在每次写入 (Source) 之前查找到末尾。