C++ Обработка файлов: как открывать, записывать, читать и закрывать файлы в C++
Что такое обработка файлов в C++?
Файлы постоянно хранят данные на устройстве хранения. При обработке файлов выходные данные программы можно сохранить в файле. Находясь в файле, над данными можно выполнять различные операции.
Поток — это абстракция устройства, где выполняются операции ввода/вывода. Вы можете представить поток как место назначения или источник символов неопределенной длины. Это будет определяться их использованием. C++ предоставляет вам библиотеку с методами обработки файлов. Давайте обсудим это.
Библиотека fstream
Библиотека fstream предоставляет C++ программисты с тремя классами для работы с файлами. Эти классы включают в себя:
- из потока– Этот класс представляет выходной поток. Он используется для создания файлов и записи информации в файлы.
- если поток– Этот класс представляет входной поток. Он используется для чтения информации из файлов данных.
- fstream– Этот класс обычно представляет файловый поток. Он поставляется с возможностями ofstream/ifstream. Это означает, что он способен создавать файлы, записывать в файлы и читать файлы данных.
Следующее изображение упрощает понимание:

Чтобы использовать вышеуказанные классы библиотеки 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;
}
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл 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. Файл будет открыт в режиме вывода для записи в него.
- Используйте оператор if, чтобы проверить, не был ли файл открыт.
- Текст для печати на консоли, если файл не открыт.
- Конец тела оператора if.
- Используйте оператор else, чтобы указать, что делать, если файл был создан.
- Текст для печати на консоли, если файл был создан.
- Напишите какой-нибудь текст в созданный файл.
- Используйте функцию close(), чтобы закрыть файл.
- Конец тела оператора else.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции 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;
}
Вывод:
Нет такого файла
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в программу, чтобы использовать ее функции.
- Включите заголовочный файл fstream в программу, чтобы использовать его классы.
- Включите пространство имен std в программу, чтобы использовать его классы, не вызывая его.
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте экземпляр класса fstream и присвойте ему имя my_file.
- Используйте функцию open(), чтобы создать новый файл с именем my_file.txt. Файл будет открыт в режиме in для чтения из него.
- Используйте оператор if, чтобы проверить, существует ли файл.
- Текст для печати на консоли, если файл не найден.
- Конец тела оператора if.
- Используйте оператор else, чтобы указать, что делать, если файл найден.
- Создайте символьная переменная названный гл.
- Создайте в то время как цикл для перебора содержимого файла.
- Записать/сохранить содержимое файла в переменной ch.
- Используйте условие if и функцию eof(), то есть конец файла, чтобы компилятор продолжал читать из файла, если конец не достигнут.
- Используйте оператор Break, чтобы прекратить чтение файла после достижения его конца.
- Выведите содержимое переменной ch на консоль.
- Конец тела while.
- Конец тела оператора else.
- Вызовите функцию close(), чтобы закрыть файл.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Резюме
- При обработке файлов выходные данные программы можно отправить и сохранить в файле.
- Затем к данным, находящимся в файле, можно применить ряд операций.
- Поток — это абстракция, представляющая устройство, на котором выполняются операции ввода/вывода.
- Поток может быть представлен как пункт назначения или источник символов неопределенной длины.
- Библиотека fstream предоставляет C++ программисты с методами обработки файлов.
- Чтобы использовать библиотеку, вы должны включить ее в свою программу с помощью директивы препроцессора #include.



