C++ 文件处理:如何打开、写入、读取、关闭文件 C++
文件处理 C++?
文件将数据永久存储在存储设备中。通过文件处理,程序的输出可以存储在文件中。在文件中可以对数据执行各种操作。
流是执行输入/输出操作的设备的抽象。您可以将流表示为无限长度字符的目标或源。这将由它们的用途决定。 C++ 为您提供了一个带有文件处理方法的库。让我们来讨论一下。
fstream 库
fstream 库提供 C++ 程序员可以使用三个类来处理文件。这些类包括:
- 流外– 此类表示输出流。它用于创建文件并将信息写入文件。
- 流式传输– 此类表示输入流。它用于从数据文件中读取信息。
- 流– 此类通常表示文件流。它具有 ofstream/ifstream 功能。这意味着它能够创建文件、写入文件、读取数据文件。
下图可以很容易理解:
要使用 fstream 库的上述类,您必须将其作为头文件包含在程序中。当然,您将使用 #include 预处理器指令。您还必须包含 iostream 头文件。
如何打开文件
在对文件执行任何操作之前,必须先打开它。如果需要写入文件,请使用 fstream 或 ofstream 对象打开它。如果只需要从文件中读取,请使用 ifstream 对象打开它。
fstream、ofstream、ifstream 三个对象都定义了 open() 函数,该函数的语法如下:
open (file_name, mode);
- file_name 参数表示要打开的文件的名称。
- mode 参数是可选的。它可以采用以下任意值:
价值观 | 描述 |
---|---|
ios:: 应用程序 | 附加模式。发送到文件的输出将附加到该文件。 |
ios::ate | 它打开文件进行输出,然后将读写控制移动到文件的末尾。 |
ios::在 | 它打开文件进行读取。 |
ios::输出 | 它打开文件进行写入。 |
ios::trunc | 如果文件存在,则在打开之前应截断文件元素。 |
可以同时使用两种模式。使用 | (OR) 运算符将它们组合起来。
例如1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
输出:
以下是代码截图:
代码说明:
- 在程序中包含iostream头文件以使用其功能。
- 在程序中包含 fstream 头文件以使用其类。
- 在我们的代码中包含 std 命名空间,以便使用它的类而不调用它。
- 调用 main() 函数。程序逻辑应位于其主体内。
- 创建fstream类的对象并将其命名为my_file。
- 对上述对象应用 open() 函数来创建一个新文件。out 模式允许我们写入文件。
- 使用 if 语句检查文件创建是否失败。
- 如果未创建文件,则在控制台上打印消息。
- if 语句主体结束。
- 使用 else 语句来声明如果文件被创建了该做什么。
- 如果文件已创建,则在控制台上打印消息。
- 对对象应用 close() 函数来关闭文件。
- else 语句主体结束。
- 如果程序成功完成,则必须返回值。
- main() 函数体结束。
如何关闭文件
一旦 C++ 程序 终止时,它会自动
- 冲刷溪流
- 释放分配的内存
- 关闭打开的文件。
然而,作为一名程序员,您应该学会在程序终止之前关闭打开的文件。
fstream、ofstream 和 ifstream 对象具有用于关闭文件的 close() 函数。该函数采用以下语法:
void close();
如何写入文件
您可以直接从您的 C++ 程序。您可以使用流插入运算符 (<<) 来实现此目的。要写入文件的文本应括在双引号中。
让我们证明这一点。
例如2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
输出:
以下是代码截图:
代码说明:
- 在程序中包含iostream头文件以使用其功能。
- 在程序中包含 fstream 头文件以使用其类。
- 在程序中包含 std 命名空间以便使用其类而不调用它。
- 调用 main() 函数。程序逻辑应添加在此函数主体内。
- 创建 fstream 类的一个实例并将其命名为 my_file。
- 使用 open() 函数创建一个名为 my_file.txt 的新文件。该文件将以 out 模式打开,以便写入内容。
- 使用 if 语句检查文件是否尚未打开。
- 如果文件未打开,则在控制台上打印的文本。
- if 语句主体结束。
- 使用 else 语句来声明如果文件被创建了该做什么。
- 如果文件已创建,则在控制台上打印的文本。
- 向创建的文件中写入一些文本。
- 使用 close() 函数关闭文件。
- else 语句主体结束。
- 程序成功完成后必须返回值。
- main() 函数体结束。
如何读取文件
您可以将文件中的信息读入 C++ 程序。使用流提取运算符 (>>) 可以实现这一点。使用运算符的方式与从键盘读取用户输入的方式相同。但是,您不使用 cin 对象,而是使用 ifstream/fstream 对象。
例如3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
输出:
没有这样的文件
以下是代码截图:
代码说明:
- 在程序中包含iostream头文件以使用其功能。
- 在程序中包含 fstream 头文件以使用其类。
- 在程序中包含 std 命名空间以便使用其类而不调用它。
- 调用 main() 函数。程序逻辑应添加在此函数主体内。
- 创建 fstream 类的一个实例并将其命名为 my_file。
- 使用 open() 函数创建一个名为 my_file.txt 的新文件。该文件将以 in 模式打开以供读取。
- 使用 if 语句检查文件是否不存在。
- 如果找不到该文件,则在控制台上打印的文本。
- if 语句主体结束。
- 使用 else 语句来说明如果找到该文件该做什么。
- 创建一个 字符变量 名为 ch。
- 创建一个 while循环 用于迭代文件内容。
- 将文件内容写入/存储到变量 ch 中。
- 使用 if 条件和 eof() 函数(即文件末尾)来确保如果未到达文件末尾,编译器将继续从文件读取。
- 一旦到达文件末尾,就使用 break 语句停止读取文件。
- 在控制台上打印变量 ch 的内容。
- 整个身体结束。
- else 语句主体结束。
- 调用close()函数关闭文件。
- 程序成功完成后必须返回值。
- main() 函数体结束。
总结
- 通过文件处理,程序的输出可以被发送并存储在文件中。
- 然后可以对文件中的数据应用多种操作。
- 流是一种抽象,表示执行输入/输出操作的设备。
- 流可以表示为无限长度的字符的目标或源。
- fstream 库提供 C++ 为程序员提供文件处理方法。
- 要使用该库,您必须使用 #include 预处理器指令将其包含在程序中。