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.