Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Общие принципы работы с файлами




Файловые потоки

В библиотеке C++ для ввода-вывода файлов существуют классы ifstream (для файловых входных потоков), ofstream (для файловых выходных потоков) и fstream (для файловых двунаправленных потоков). Эти классы – наследники, соответственно, классов istream, ostream и iostream, которые, в свою очередь, наследуют свойства класса ios. Это означает, что классы файлового ввода-вывода наследуют соответствующие операции и методы ввода-вывода, поля и способы фор­матирования и т.д. Классы файлового ввода-вывода определены в файле заголовков fstream.h.

Использование файлов в программе предполагает выполнение следующих действий:

- создание файлового потока;

- открытие потока и связывание его с файлом;

- передача данных (ввод/вывод);

- закрытие файла;

- уничтожение потока.

В программе файловый поток объявляется как объект одного из классов файлового ввода-вывода (ifstream, ofstream или fstream):

ifstream f1; // создание потока f1 для файлового ввода

ofstream f2; // создание потока f2 для файлового вывода

Как и любые другие объекты, потоки могут создаваться статически (как f1 и f2 в предыдущем примере) или динамически (с помощью операции new):

ofstream *f3 = new ofstream; // динамическое создание потока f3

// для файлового вывода

Классы файлового ввода-вывода содержат специальные операции и методы работы с файлами – открытия, проверки состояния, работы с текущей позицией, закрытия файлов, а также ввода-вывода и форматирования информации. Большинство из них унаследовано от классов-предков (ios, istream, ostream). Связывание потока с конкретным файлом осуществляется одним из двух возможных способов – либо при создании потока:

ofstream f4("d:\\test4.txt"); // создание потока f4 для файлового вывода,

// открытие и связывание его с файлом

либо при открытии уже созданного потока с помощью метода open:

f1.open("d:\\test5.txt"); // открытие ранее созданного потока f1

// и связывание его с файлом

И в том и другом случае указывается имя файла и, если необходимо, режимы его открытия, описанные в разделе 11.4.3.

Передача данных выполняется операциями >> и << или методами ввода-вывода, описанными в разделе 11.4.5. Закрытие файла происходит либо посредством выполнения метода close:

f4.close();

f3->close();

либо автоматически при уничтожении потока (при завершении программы или при удалении динамически созданного потока с помощью delete):

delete f3;

При вводе-выводе файл рассматривается как последовательность байтов. Для каждого файла существует текущая позиция, начиная с которой будет выполняться следующая операция чтения или записи. Началу файла соответствует текущая позиция 0. После выполнения каждой операции ввода-вывода значение текущей позиции автоматически увеличивается на число введенных или выведенных байтов.

Пусть, например, мы начинаем чтение с нача­ла файла. Предположим, первая операция чтения ввела 4 байта, интерпретированное как целое число. Тогда текущая позиция для данного файла становится равной 4, это значение указывает на пятый по порядку байт в файле.

Текущую позицию в файле можно явно установить с помощью специальных методов, задавая ее смещение от начала файла, конца файла или от текущего значения. Пусть, например, мы “передвинули” текущую позицию во входном файле на 20 байтов вперед. Тогда, следующая операция чтения нач­нет ввод именно с этой позиции. Если текущая позиция явным образом не изменяется, чтение и запись файла происходят последовательно.




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 440; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.