C++ 文件处理:如何打开、写入、读取、关闭文件 C++

文件处理 C++?

文件将数据永久存储在存储设备中。通过文件处理,程序的输出可以存储在文件中。在文件中可以对数据执行各种操作。

流是执行输入/输出操作的设备的抽象。您可以将流表示为无限长度字符的目标或源。这将由它们的用途决定。 C++ 为您提供了一个带有文件处理方法的库。让我们来讨论一下。

fstream 库

fstream 库提供 C++ 程序员可以使用三个类来处理文件。这些类包括:

  • 流外– 此类表示输出流。它用于创建文件并将信息写入文件。
  • 流式传输– 此类表示输入流。它用于从数据文件中读取信息。
  • – 此类通常表示文件流。它具有 ofstream/ifstream 功能。这意味着它能够创建文件、写入文件、读取数据文件。

下图可以很容易理解:

fstream 库
fstream 库

要使用 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;
}

输出:

打开文件

以下是代码截图:

打开文件

代码说明:

  1. 在程序中包含iostream头文件以使用其功能。
  2. 在程序中包含 fstream 头文件以使用其类。
  3. 在我们的代码中包含 std 命名空间,以便使用它的类而不调用它。
  4. 调用 main() 函数。程序逻辑应位于其主体内。
  5. 创建fstream类的对象并将其命名为my_file。
  6. 对上述对象应用 open() 函数来创建一个新文件。out 模式允许我们写入文件。
  7. 使用 if 语句检查文件创建是否失败。
  8. 如果未创建文件,则在控制台上打印消息。
  9. if 语句主体结束。
  10. 使用 else 语句来声明如果文件被创建了该做什么。
  11. 如果文件已创建,则在控制台上打印消息。
  12. 对对象应用 close() 函数来关闭文件。
  13. else 语句主体结束。
  14. 如果程序成功完成,则必须返回值。
  15. 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;
}

输出:

如何写入文件

以下是代码截图:

如何写入文件

代码说明:

  1. 在程序中包含iostream头文件以使用其功能。
  2. 在程序中包含 fstream 头文件以使用其类。
  3. 在程序中包含 std 命名空间以便使用其类而不调用它。
  4. 调用 main() 函数。程序逻辑应添加在此函数主体内。
  5. 创建 fstream 类的一个实例并将其命名为 my_file。
  6. 使用 open() 函数创建一个名为 my_file.txt 的新文件。该文件将以 out 模式打开,以便写入内容。
  7. 使用 if 语句检查文件是否尚未打开。
  8. 如果文件未打开,则在控制台上打印的文本。
  9. if 语句主体结束。
  10. 使用 else 语句来声明如果文件被创建了该做什么。
  11. 如果文件已创建,则在控制台上打印的文本。
  12. 向创建的文件中写入一些文本。
  13. 使用 close() 函数关闭文件。
  14. else 语句主体结束。
  15. 程序成功完成后必须返回值。
  16. 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;
}

输出:

从文件读取

没有这样的文件

以下是代码截图:

从文件读取

代码说明:

  1. 在程序中包含iostream头文件以使用其功能。
  2. 在程序中包含 fstream 头文件以使用其类。
  3. 在程序中包含 std 命名空间以便使用其类而不调用它。
  4. 调用 main() 函数。程序逻辑应添加在此函数主体内。
  5. 创建 fstream 类的一个实例并将其命名为 my_file。
  6. 使用 open() 函数创建一个名为 my_file.txt 的新文件。该文件将以 in 模式打开以供读取。
  7. 使用 if 语句检查文件是否不存在。
  8. 如果找不到该文件,则在控制台上打印的文本。
  9. if 语句主体结束。
  10. 使用 else 语句来说明如果找到该文件该做什么。
  11. 创建一个 字符变量 名为 ch。
  12. 创建一个 while循环 用于迭代文件内容。
  13. 将文件内容写入/存储到变量 ch 中。
  14. 使用 if 条件和 eof() 函数(即文件末尾)来确保如果未到达文件末尾,编译器将继续从文件读取。
  15. 一旦到达文件末尾,就使用 break 语句停止读取文件。
  16. 在控制台上打印变量 ch 的内容。
  17. 整个身体结束。
  18. else 语句主体结束。
  19. 调用close()函数关闭文件。
  20. 程序成功完成后必须返回值。
  21. main() 函数体结束。

总结

  • 通过文件处理,程序的输出可以被发送并存储在文件中。
  • 然后可以对文件中的数据应用多种操作。
  • 流是一种抽象,表示执行输入/输出操作的设备。
  • 流可以表示为无限长度的字符的目标或源。
  • fstream 库提供 C++ 为程序员提供文件处理方法。
  • 要使用该库,您必须使用 #include 预处理器指令将其包含在程序中。