Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы на экзаменн-е вопросы за 1-й курс. Препод- Рудой И.Б / Ответы / 01 Файлы и потоки в Срр. Потоковый ввод-вывод. Примеры

..doc
Скачиваний:
37
Добавлен:
25.05.2014
Размер:
29.18 Кб
Скачать

01 Файлы и потоки в Срр. Потоковый ввод-вывод. Примеры.

Потоком называется абстрактное понятие, относящееся к любому переносу данных от источника (или поставщика данных) к приемнику (или потребителю) данных. Также используются синонимы извлечение, прием и получение, когда речь идет о вводе символов от источника, и вставка, помещение или запоминание, когда речь идет о выводе символов на приемник.

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

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

Ниже приведена программа копирования одного файла в другой. Имена файлов берутся из командной строки программы:      #include <fstream.h>      #include <libc.h>      void error(char* s, char* s2 ="")      {         cerr << s << ' ' << s2 << '\n';         exit(1);      }      int main(int argc, char* argv[])      {          if (argc != 3) error("wrong number of arguments");          ifstream from(argv[1]);          if (!from) error("cannot open input file",argv[1]);          ostream to(argv[2]);          if (!to) error("cannot open output file",argv[2]);          char ch;          while (from.get(ch)) to.put(ch);          if (!from.eof() || to.bad())             error("something strange happened");          return 0;       } Для открытия выходного файла создается объект класса ofstream - выходной поток файла, использующий в качестве аргумента имя файла. Аналогично, для открытия входного файла создается объект класса ifstream - входной файловый поток, также использующий в качестве аргумента имя файла. В обоих случаях следует  проверить состояние созданного объекта, чтобы убедиться в успешном открытии файла, а если это не так, операции завершатся не успешно, но корректно.       По умолчанию ifstream всегда открывается на чтение, а ofstream открывается на запись. В ostream и в istream можно использовать необязательный второй аргумент, указывающий иные режимы открытия:      class ios {      public:          //...          enum open_mode {             in=1,            // открыть на чтение             out=2,           // открыть как выходной             ate=4,           // открыть и переместиться в конец файла             app=010,         // добавить             trunc=020,       // сократить файл до нулевой длины             nocreate=040,    // неудача, если файл не существует             noreplace=0100   // неудача, если файл существует          };          //...      };