Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Создание потока, открытие и закрытие файла, связывание его с потокомСтр 1 из 2Следующая ⇒
Семинар 13. Работа с файлами Язык С++ поддерживает две системы ввода-вывода: одна, с помощью функций, унаследована из языка С, вторая, объектно-ориентированная, используется в С++. Мы рассмотрим вторую, так как она обеспечивает более надежный ввод-вывод, чем функции С. Операции ввода-вывода выполняются в С++ через потоки. Понятие потока используется в языке для обозначения получаемых или передаваемых данных. Для работы с файловыми потоками необходимо подключить заголовочный файл < fstream>. В этом файле содержатся классы, обеспечивающие выполнение необходимых операций с файлом. В зависимости от операции мы будем использовать следующие классы: ifstream (только чтение), ofstream (только запись), fstream (чтение и запись данных в один и тот же файл). Работа с файлом обычно предполагает выполнение следующих действий: · создание потока (потокового объекта); · открытие файла и связывание его с потоком; · обмен с потоком (ввод/вывод); · закрытие файла. Создание потока, открытие и закрытие файла, связывание его с потоком Классы файловых потоков содержат несколько конструкторов, позволяющих варьировать способы создания потоковых объектов. При создании экземпляра потокового класса чаще всего используются два способа: класс переменная; класс переменная (путь_к_файлу [, режим ] ); В первом случае создается объект, не связанный с файлом. Чтобы связать объект с необходимым файлом, позже нужно вызвать метод open(), который имеет параметры, аналогичные параметрам, задаваемым во втором случае. Второй способ позволяет сразу открыть файл и связать его с потоком. Путь к файлу указывается в первом параметре. Он задается в виде строки. Символ «\», используемый в случае полного имени файла, в этой строке нужно записывать дважды. Если путь к файлу не указывается, то подразумевается, что файл находится в текущей папке. Второй параметр задает режим открытия файла. Можно использовать следующие режимы:
В данном случае ios – класс, который используется для указания режима доступа. Можно объединять несколько режимов операцией «|». Если параметр не указан, то используются режимы по умолчанию: для класса ifstream – ios:: in (чтение в текстовом режиме), для ofstream – ios:: out (запись в текстовом режиме; старое содержимое стирается), для fstream – ios:: in | ios:: out (чтение и запись в текстовом режиме; старое содержимое не удаляется, курсор устанавливается на начало файла). Примеры создания потоковых объектов и связывания их с конкретными файлами: // Файлы для записи ofstream ft(" primer.txt"); ofstream fout1, fout2; fout1.open(" test1", ios:: app); fout2.open(" test2", ios:: binary); // Файл для чтения ifstream finp1(" data.txt"); ifstream f1(" D: \\Myfiles\\data.txt"); // Файл для чтения и записи fstream myfile; myfile.open(" mf.dat"); Если файл открыть не удалось, потоковый объект принимает значение, равное нулю. Это можно использовать для проверки успешности открытия файла. Например, ifstream from(" D: \\data.txt"); // открываем входной файл if (! from) cout< < " файл data.txt не найден" < < endl; Во время работы программы проверить, открыт файл или нет, можно с помощью метода is_open. Если файл открыт, то метод возвращает значение true: if (from.is_open()) cout< < " файл data.txt открыт" < < endl; Файл закрывается автоматически при уничтожении потокового объекта. Если требуется более раннее закрытие файла, то следует использовать метод close.
|