Урок #14 - Работа с файлами

Урок #14 - Работа с файлами

В уроке мы научимся работать с файлами посредством использования заголовочного файла fstream. Мы научимся записывать данные в файл (ofstream), а также считывать данные из файла (ifstream).

Видеоурок

Многие языки программирования предоставляют классы для работы с файлами и директориями проекта. Язык C++ обладает множеством классов для записи и чтения данных из файлов.


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

При работе с файлами всегда необходимо помнить две вещи:

  1. Перед началом работы с файлом его необходимо открыть;
  2. После завершения работы с файлом его необходимо закрыть.


Если файл не открыт или же неверно открыт, то вы не можете полноценно работать с его содержимым. 


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


Исключения и файлы

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


Запись данных в файл

При записи данных в файл его изначально необходимо открыть. Для этого в языке C++ используется класс ofstream:

// Создание/открытие файла "examples.txt"
ofstream itproger_file("examples.txt");
// Можно было использовать метод open
// ofstream itproger_file;
// itproger_file.open("examples.txt");
// но первая запись короче, поэтому стоит использовать её
if (itproger_file.is_open()) { // Проверяем открыт ли файл
	itproger_file << "Simple text"; // Записываем текст в файл
	itproger_file.close(); // Всегда необходимо закрывать файл
} else // Если файл не удалось открыть, тогда выдаем ошибку
	cout << "Error!" << endl;

Таким образом мы можем открыть файл и поместить в него любую информацию.


При открытии файла можно указать режим открытия. Существуют несколько режимов и все они представлены на фото ниже:



Режим необходимо прописывать в качестве второго параметра при открытии файла:
#include <iostream>
#include <fstream>

using namespace std; 

int main() {
	// Открываем файл для записи в него текста
	ofstream file("test.txt", ios_base::out);
	if (file.is_open()) { // Проверяем открыт ли сам файл
		file << "Simple world"; // Записываем текст в начало файла
		textFile.close(); // Закрываем файл
	}
 
	cin.get();
	return 0; 
}

Чтение данных из файла

Для чтения данных файл необходимо также изначально открыть и в конце закрыть. Чтобы прочесть содержимое файла используется класс ifstream:

#include <iostream>
#include <fstream>

using namespace std; 

int main() {
	// здесь будет храниться промежуточный текст,
	// который мы будем считывать из файла
	char temp[100];
	ifstream some_file("test.txt"); // открываем файл для чтения

	// считываем лишь первое слово и помещаем в переменную temp
	some_file >> temp;
	cout << temp << endl; // выводим эту переменную

	// Считываем определенное количество символов - 100
	// и записываем их в нашу переменную
	some_file.getline(temp, 100);
	some_file.close(); // Закрываем файл
	cout << temp << endl; // Отображаем переменную temp
 
	cin.get();
	return 0; 
}

Исходный код

Весь код будет доступен после подписки на проект!

Онлайн редактор кода

Загрузка...

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

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

Также стоит посмотреть

Уроки Qt Creator | Графический интерфейс на С++
13 уроков
Создание игры на C++ / Создание "Змейки"
3 урока
Изучение C++ от новичка до профи
Комментарии для сайта Cackle