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

Работа с файлами в C++ — важная часть программирования, позволяющая сохранять данные между запусками программы, обмениваться информацией с другими приложениями и обрабатывать большие объемы данных.

Библиотека <fstream> предоставляет три основных класса:

  • ifstream — чтение из файла (Input File Stream).

  • ofstream — запись в файл (Output File Stream).

  • fstream — комбинированная работа (чтение и запись).


Открытие и закрытие файлов

Открытие файла (ifstream, ofstream)

Перед работой с файлом его нужно открыть. Можно указать путь и режим открытия.

Запись в файл (ofstream)
#include <iostream> #include <fstream> // Подключаем библиотеку для работы с файлами int main() { std::ofstream outFile("example.txt"); // Создаем объект для записи в файл if (!outFile.is_open()) { // Проверяем, открылся ли файл std::cerr << "Ошибка открытия файла!" << std::endl; return 1; } outFile << "Привет, мир!" << std::endl; // Записываем строку в файл outFile.close(); // Закрываем файл (рекомендуется всегда закрывать) std::cout << "Данные записаны в файл." << std::endl; return 0; }
Пояснение:
  • ofstream создает файл, если его нет, или перезаписывает существующий.

  • is_open() проверяет успешность открытия.

  • close() освобождает ресурсы.

Чтение из файла (ifstream)
#include <iostream> #include <fstream> #include <string> int main() { std::ifstream inFile("example.txt"); // Открываем файл для чтения if (!inFile.is_open()) { std::cerr << "Ошибка открытия файла!" << std::endl; return 1; } std::string line; while (std::getline(inFile, line)) { // Читаем файл построчно std::cout << line << std::endl; } inFile.close(); // Закрываем файл return 0; }
Пояснение:
  • ifstream читает файл, но не создает его, если его нет.

  • getline() считывает строку до символа перевода строки.


Режимы открытия файлов

Файлы можно открывать в разных режимах (флаги):

Флаг Описание
std::ios::in Открыть для чтения (по умолчанию ifstream)
std::ios::out Открыть для записи (по умолчанию ofstream)
std::ios::app Дописывать в конец файла (не перезаписывать)
std::ios::binary Открыть в бинарном режиме
Открытие с режимом app (добавление в конец)
std::ofstream outFile("example.txt", std::ios::app); // Добавляем данные в конец outFile << "Новая строка." << std::endl; outFile.close();
Пояснение:

Без app файл перезапишется, с app — новые данные добавятся в конец.


Обработка ошибок

Проверка состояния файла:

  • good() — файл в хорошем состоянии.

  • fail() — ошибка (например, неверный тип данных).

  • eof() — достигнут конец файла.

Проверка состояния файла
std::ifstream inFile("data.txt"); if (!inFile) { // Альтернатива is_open() std::cerr << "Файл не открыт!" << std::endl; return 1; } int number; while (inFile >> number) { // Читаем числа до ошибки или конца файла std::cout << number << " "; } if (inFile.eof()) { std::cout << "\nДостигнут конец файла." << std::endl; } else if (inFile.fail()) { std::cerr << "\nОшибка чтения данных!" << std::endl; } inFile.close();
Пояснение:

inFile >> number пытается прочитать число, если не получается — цикл прерывается.


Мы разобрали основные идеи работы с файлами на языке программирования C++. Далее, подробнее разберёмся как раотать с текстовыми и бинарными файлами!


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться

Содежание
1. Введение в язык C++ 2. Установка компилятора 3. Установка среды разработки (IDE) 4. Структура программы и компиляция 5. Переменные, константы и типы данных 6. Операторы и выражения 7. Ввод и вывод в консоли 8. Условные операторы 9. Логические выражения 10. Циклы 11. Массивы 12. Динамические массивы 13. Указатели в С++ 14. Ссылки в C++ 15. Функции 16. Рекурсия 17. Callback-функции 18. Динамическое выделение памяти 19. Утечки памяти и как их избежать 20. Умные указатели в С++ 21. Парадигмы программирования 22. Структуры (struct) 23. Классы и объекты в C++ 24. Инкапсуляция 25. Наследование 26. Полиморфизм 27. Абстрактные классы 28. Списки инициализации 29. Перегрузка операторов 30. Обработка исключений 31. Пользовательские исключения 32. Шаблонные функции в C++ 33. Шаблонные классы в C++ 34. STL и использование стандартных шаблонов 35. Аллокаторы и пользовательские распределители памяти 36. Работа с файлами