C++ 文件处理:如何在 C++ 中打开、写入、读取、关闭文件
什么是 C++ 中的文件处理?
文件将数据永久存储在存储设备中。通过文件处理,程序的输出可以存储在文件中。可以在文件中对数据进行各种操作。
流是执行输入/输出操作的设备的抽象。您可以将流表示为目标或不定长度字符的源。这将取决于它们的使用情况。 C++ 为您提供了一个带有文件处理方法的库。让我们讨论一下。
在本 c++ 教程中,您将学习:
- 什么是 C++ 中的文件处理?
- fstream 库
- 如何打开文件
- 如何关闭文件
- 如何写入文件
- 如何读取文件
fstream 库
fstream 库为 C++ 程序员提供了三个用于处理文件的类。这些类包括:
- 流 – 此类表示输出流。它用于创建文件并将信息写入文件。
- ifstream – 此类表示输入流。它用于从数据文件中读取信息。
- fstream – 这个类一般代表一个文件流。它带有 ofstream/ifstream 功能。这意味着它能够创建文件、写入文件、读取数据文件。
下图很容易理解:
<中心>
<图> 图>
要使用fstream库的上述类,你必须将它作为头文件包含在你的程序中。当然,您将使用#include 预处理器指令。您还必须包含 iostream 头文件。
如何打开文件
在对文件执行任何操作之前,您必须先打开它。如果您需要写入文件,请使用 fstream 或 ofstream 对象打开它。如果只需要从文件中读取,请使用 ifstream 对象打开它。
三个对象,即 fstream、ofstream 和 ifstream,都在其中定义了 open() 函数。该函数采用以下语法:
open (file_name, mode);
- file_name 参数表示要打开的文件的名称。
- mode 参数是可选的。它可以采用以下任何值:
可以同时使用两种模式。您可以使用 | 组合它们(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 的 char 变量。
- 创建一个用于迭代文件内容的 while 循环。
- 将文件的内容写入/存储在变量 ch 中。
- 使用 if 条件和 eof() 函数(即文件末尾)确保编译器在未到达末尾时继续读取文件。
- 一旦到达结尾,使用 break 语句停止读取文件。
- 在控制台打印变量 ch 的内容。
- while 正文的结尾。
- else 语句主体的结尾。
- 调用 close() 函数关闭文件。
- 程序必须在成功完成后返回值。
- main() 函数主体的结尾。
总结:
- 通过文件处理,可以将程序的输出发送并存储在文件中。
- 然后可以对文件中的数据应用许多操作。
- 流是一种抽象,表示执行输入/输出操作的设备。
- 流可以表示为不定长度字符的目标或源。
- fstream 库为 C++ 程序员提供文件处理方法。
- 要使用该库,您必须使用#include 预处理器指令将其包含在您的程序中。
C语言