C++ Обработка файлов: как открывать, записывать, читать и закрывать файлы в C++

Что такое обработка файлов в C++?

Файлы постоянно хранят данные на устройстве хранения. При обработке файлов выходные данные программы можно сохранить в файле. Находясь в файле, над данными можно выполнять различные операции.

Поток — это абстракция устройства, где выполняются операции ввода/вывода. Вы можете представить поток как место назначения или источник символов неопределенной длины. Это будет определяться их использованием. C++ предоставляет вам библиотеку с методами обработки файлов. Давайте обсудим это.

Библиотека fstream

Библиотека fstream предоставляет C++ программисты с тремя классами для работы с файлами. Эти классы включают в себя:

  • из потока– Этот класс представляет выходной поток. Он используется для создания файлов и записи информации в файлы.
  • если поток– Этот класс представляет входной поток. Он используется для чтения информации из файлов данных.
  • fstream– Этот класс обычно представляет файловый поток. Он поставляется с возможностями ofstream/ifstream. Это означает, что он способен создавать файлы, записывать в файлы и читать файлы данных.

Следующее изображение упрощает понимание:

библиотека fstream
библиотека fstream

Чтобы использовать вышеуказанные классы библиотеки fstream, вы должны включить ее в свою программу в качестве заголовочного файла. Конечно, вы будете использовать директиву препроцессора #include. Вы также должны включить файл заголовка iostream.

Как открыть файлы

Прежде чем выполнять какую-либо операцию с файлом, его необходимо сначала открыть. Если вам нужно выполнить запись в файл, откройте его, используя объекты fstream или ofstream. Если вам нужно только прочитать файл, откройте его с помощью объекта ifstream.

В трех объектах, то есть fstream, ofstream и ifstream, определена функция open(). Функция принимает следующий синтаксис:

open (file_name, mode);
  • Параметр file_name обозначает имя файла, который нужно открыть.
  • Параметр режима является необязательным. Он может принимать любое из следующих значений:
Значение Описание
iOS:: приложение Режим добавления. Вывод, отправленный в файл, добавляется к нему.
ios::ate Он открывает файл для вывода, затем перемещает управление чтением и записью в конец файла.
iOS:: в Он открывает файл для чтения.
ios :: out Он открывает файл для записи.
ios::trunc Если файл существует, элементы файла должны быть обрезаны перед его открытием.

Возможно использование двух режимов одновременно. Вы объединяете их, используя | (ИЛИ) оператор.

Пример 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. Файл будет открыт в режиме вывода для записи в него.
  7. Используйте оператор if, чтобы проверить, не был ли файл открыт.
  8. Текст для печати на консоли, если файл не открыт.
  9. Конец тела оператора if.
  10. Используйте оператор else, чтобы указать, что делать, если файл был создан.
  11. Текст для печати на консоли, если файл был создан.
  12. Напишите какой-нибудь текст в созданный файл.
  13. Используйте функцию close(), чтобы закрыть файл.
  14. Конец тела оператора else.
  15. Программа должна вернуть значение после успешного завершения.
  16. Конец тела функции main().

Как читать из файлов

Вы можете считывать информацию из файлов в свой C++ program. Это возможно с помощью оператора извлечения потока (>>). Вы используете оператор так же, как вы используете его для чтения пользовательского ввода с клавиатуры. Однако вместо использования объекта 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. Создайте символьная переменная названный гл.
  12. Создайте в то время как цикл для перебора содержимого файла.
  13. Записать/сохранить содержимое файла в переменной ch.
  14. Используйте условие if и функцию eof(), то есть конец файла, чтобы компилятор продолжал читать из файла, если конец не достигнут.
  15. Используйте оператор Break, чтобы прекратить чтение файла после достижения его конца.
  16. Выведите содержимое переменной ch на консоль.
  17. Конец тела while.
  18. Конец тела оператора else.
  19. Вызовите функцию close(), чтобы закрыть файл.
  20. Программа должна вернуть значение после успешного завершения.
  21. Конец тела функции main().

Резюме

  • При обработке файлов выходные данные программы можно отправить и сохранить в файле.
  • Затем к данным, находящимся в файле, можно применить ряд операций.
  • Поток — это абстракция, представляющая устройство, на котором выполняются операции ввода/вывода.
  • Поток может быть представлен как пункт назначения или источник символов неопределенной длины.
  • Библиотека fstream предоставляет C++ программисты с методами обработки файлов.
  • Чтобы использовать библиотеку, вы должны включить ее в свою программу с помощью директивы препроцессора #include.