Работа с файлами в C++: открытие, чтение, запись и закрытие
Что такое работа с файлами в C++?
Работа с файлами позволяет сохранять данные программы на носителях. Направляя вывод программы в файл, можно затем обрабатывать, анализировать или архивировать эти данные.
Поток (stream) — абстракция, представляющая непрерывный источник или приёмник символов. C++ предоставляет мощную библиотеку fstream с классами и функциями для бесшовной работы с файлами.
В этом уроке вы узнаете:
- Определение работы с файлами в C++
- Библиотеку
fstreamи её классы - Открытие файлов в различных режимах
- Безопасное закрытие файлов
- Запись данных в файлы
- Чтение данных из файлов
Библиотека fstream
Библиотека fstream предоставляет три основных класса:
- ofstream — выходной поток для создания и записи файлов.
- ifstream — входной поток для чтения существующих файлов.
- fstream — комбинированный поток, поддерживающий и ввод, и вывод.
Наглядная справка:
Для использования подключите заголовочный файл fstream и, при необходимости консольного вывода, iostream.
Как открыть файлы
Перед любой операцией файл должен быть открыт. Используйте ofstream для записи, ifstream для чтения, fstream для обоих. У каждого класса есть метод open():
open(имя_файла, режим);
- имя_файла — путь или имя целевого файла.
- режим — опционально; задаёт тип доступа. Основные флаги:
| Флаг | Описание |
|---|---|
| ios::app | Режим дозаписи — запись в конец файла. |
| ios::ate | Открыть и сразу перейти в конец. |
| ios::in | Открыть для чтения. |
| 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. - Создаём объект
fstreamс именемmy_file. - Открываем файл в режиме записи (
ios::out). - Проверяем успешность открытия; при неудаче сообщаем об ошибке.
- При успехе печатаем подтверждение и закрываем файл.
- Возвращаем
0— нормальное завершение.
Как закрыть файлы
Хотя C++ автоматически сбрасывает и закрывает потоки при выходе из программы, явное закрытие после последней операции считается хорошей практикой.
Метод close() доступен у fstream, ofstream и ifstream:
void close();
Как записать в файл
Запись использует оператор вставки в поток (<<). Текст для сохранения должен быть в кавычках или подан напрямую в поток.
Пример 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;
}
Вывод:

Скриншот кода:

Разбор кода:
- Подключаем необходимые заголовки.
- Создаём объект
fstream. - Открываем целевой файл в режиме записи.
- Проверяем валидность потока.
- Вставляем строку "Guru99" в файл.
- Закрываем поток.
- Возвращаем
0.
Как читать из файла
Чтение использует оператор извлечения (>>) так же, как cin. Данные считываются в переменные соответствующих типов.
Пример 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. - Открываем файл для чтения (
ios::in). - Проверяем существование; если нет — уведомляем.
- Читаем символы по одному до достижения EOF.
- Печатаем каждый символ в консоль.
- Закрываем поток.
- Возвращаем
0.
Резюме
- Работа с файлами сохраняет вывод программы в долговременное хранилище.
- Потоки абстрагируют устройства ввода и вывода.
- Библиотека
fstreamпредоставляет классы для всех распространённых файловых операций. - Всегда подключайте
<fstream>(и<iostream>при необходимости) в начале исходника. - Открывайте файлы с подходящими режимами, выполняйте действия, закрывайте потоки.
Язык C
- Работа с файлами в C: мастерство ввода-вывода с fopen, fprintf, fread и fseek
- Инициализация блочной памяти FPGA из текстовых файлов с помощью библиотеки TEXTIO в VHDL
- Обработка исключений в C++: практические примеры try, catch, throw
- Комментарии в C: пишем понятные и эффективные заметки
- Чтение файлов в Java с BufferedReader — Практическое руководство с примерами
- Заголовочные файлы в C: типы, подключение и лучшие практики
- Ввод-вывод в файлы в C++: чтение и запись с fstream
- Освоение обработки сигналов в C++: безопасное управление прерываниями и корректное завершение программы
- Ввод-вывод файлов в Python: полное руководство по операциям I/O
- Микрометр: как читать и использовать этот точное измерительный инструмент