Работа с файлами
Поток вывода
Для записи файла используется 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, виртуальные таблицы или зависят от компоновки: такой файл не является переносимым форматом.
Итог
Файловые потоки автоматически управляют закрытием файла. Всегда проверяй ошибки открытия и учитывай рабочую директорию, режим открытия и формат данных.
