№27, 28. Файлы и потоки; методы открытия файлов для обмена информацией
Ахха! Вот мы и подошли к весьма простой, но ОЧЕНЬ шаманской теме, ибо файловые потоки без бубна работайут крайне редко (в моих кривых руках))
Кстати, вообще говоря любая работа с файлами подразумевает использование потоков. И вообще, потоками реализован весь ввод-вывод в C/C++, но на лабах “потоковой” называется работа с файлами через библиотеку fstream.
Итак.
Итак, для начала нужно как минимум подключить библиотеку fstream.h:
#include <fstream.h>
Потом создать файловый поток для необходимого файла:
ifstream myFStr; //для чтения
ofstream myFStr; //для записи
fstream myFStr; //для любых операций
Потом нужно связать поток с нужным файлом:
myFStr.open(filename [, метод открытия]);
Методы открытия:
ios::app
ios::ate
ios::binary
ios::in
ios::out
ios::trunc
Их можно комбинировать логической операцией “ИЛИ”, т.е.
myFStr.open(filename, ios::in | ios::out);
//откроет файл filename для чтения и записи
Но в 99% случаев вам это не понадобится, так как этот параметр задан по умолчанию (для каждого типа потоков соответствующий) и его можно опустить:
myFStr.open(filename);
Потом, по-хорошему, нужно проверить, открылся ли файл:
if (!myFSTR)
{
//Файл не открылся, паникуем
}
Еще можно проверить, открылся ли файл, вызвав функцию is_open();
if (!myFSTR.is_open())
{
//Файл не открылся, паникуем
}
Так типа корректнее.
В общем, после всех этих манипуляций мы получили рабочий файловый поток, открытый как нам надо.
Можем делать с ним все что хочется с помощью операций потокового ввода-вывода (<< >>)
Типа:
myFStr<<"Тостеры"<<39,95<<endl;
myFStr<<"Миксеры"<<24,95<<endl;
а потом
char item[20];
float cost;
myFStr>>item>>cost;
cout<<item<<" "<<cost<<endl;
myFStr>>item>>cost;
cout<<item<<" "<<cost<<endl;
Теперь все это надо закрыть:
myFStr.close();
Вот
Все
Упарился
Оставить комментарий
Вы должны авторизоваться чтобы оставлять комментарии.
Вы можете использовать HTML-тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>