Зачем нужны файлы?
До сих пор всё, что делала ваша программа, исчезало после её завершения. Чтобы сохранить данные надолго — их нужно записать в файл.
Файлы позволяют:
- Сохранять результаты работы (например, таблицу рекордов);
- Загружать настройки или уровень игры;
- Обмениваться данными между программами.
Библиотека file
Для работы с файлами в Idyllium используется встроенная библиотека file:
Она предоставляет два типа потоков:
file.ostream— для записи в файл (output stream);file.istream— для чтения из файла (input stream).
Открытие файла для записи
Чтобы записывать данные в файл, нужно сначала открыть его функцией file.open():
Разберём:
file.ostream— тип объекта «поток вывода в файл»;fout— имя этого объекта (можно любое);file.open()— функция для открытия файла;"output.txt"— имя файла (создастся, если не существует);"write"— режим открытия: запись.
Запись данных: выполнение
После открытия файла можно записывать в него строки с помощью метода write_line():
Метод write_line() работает точно так же, как console.write() — принимает любое количество аргументов и собирает из них строку.
Перенос строки нужно указывать вручную (через '\n'), как и в консоли.
Завершение записи
После завершения записи обязательно нужно закрыть файл:
Это гарантирует, что все данные будут записаны на диск и файл не останется «зависшим».
Запись данных: полный пример
При выполнении данной программы появится файл output.txt со следующим содержимым:
Открытие файла для чтения
Чтобы прочитать файл, его нужно открыть в режиме "read":
Здесь:
file.istream— тип «поток ввода из файла»;fin— имя объекта;file.open()— функция для открытия файла;"input.txt"— имя существующего файла;"read"— режим: чтение.
Если файла не существует — программа выдаст ошибку.
Чтение файла построчно
Возьмём файл с тремя строками:
Прочитаем его вручную:
Здесь возникают две проблемы:
- Строки содержат символ
'\n'(кроме последней); - Нельзя так читать файл, если количество строк заранее неизвестно.
Очистка строки: метод .trim()
Метод .trim() удаляет управляющие символы (вроде '\n', '\t') из строки:
Теперь строки «чистые» и готовы к использованию.
Чтение файла неизвестной длины
Метод .has_next_line() у объектов типа istream возвращает true, если в файле ещё есть строки:
Такой цикл прочитает файл целиком — независимо от количества строк.
Полный пример: чтение и очистка файла
При входном файле:
Программа выведет:
Теперь вы можете читать любые текстовые файлы — сколько бы в них ни было строк.