Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

Работа с файлами

Страница 31 из 43 · 2026-10-25 · 1 мин чтения

Работа с файлами

Поток вывода

Для записи файла используется std::ofstream из <fstream>:

#include <fstream>#include <iostream>std::ofstream file("result.txt");if (!file) {    std::cerr << "Не удалось открыть файл\n";    return 1;}file << "Hello, file!\n";

При выходе объекта из области видимости файл закрывается автоматически. Явный close() нужен, если важно закрыть файл раньше.

Чтение файла

std::ifstream file("input.txt");if (!file) {    std::cerr << "Не удалось открыть input.txt\n";    return 1;}std::string line;while (std::getline(file, line)) {    std::cout << line << '\n';}

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

Режимы открытия

  • std::ios::in — чтение.
  • std::ios::out — запись.
  • std::ios::app — добавление в конец.
  • std::ios::trunc — очистка существующего содержимого при открытии на запись.
  • std::ios::binary — бинарный режим.
std::ofstream log("app.log", std::ios::app);

Чтение чисел

Можно читать данные напрямую через >>, но проверяй состояние потока и формат входных данных. Для сложного формата полезно сначала читать строку, а затем разбирать её отдельно.

Бинарные данные

Для бинарных данных используй read() и write() с корректно рассчитанным размером. Не записывай произвольные объекты целиком, если они содержат указатели, std::string, виртуальные таблицы или зависят от компоновки: такой файл не является переносимым форматом.

Итог

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