Шаг 87.
Microsoft Visual C++ 2010. Язык С/С++.
Ввод и вывод в языках C и C++. Ввод/вывод в языке C++ (общие сведения)

    На этом шаге мы приведем общие сведения об организации ввода и вывода в языке C++.

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

    Чтобы начать писать программу с использованием ввода/вывода на языке C++, следует обязательно поместить директиву препроцессора:

  #include <fstream>     .

    Класс fstream является потомком классов istream, ostream. Эти же классы являются родителями классов ifstream, ofstream. Класс fstream используется для организации ввода/вывода (т. е. чтения/записи) в один и тот же файл. Классы ifstream, ofstream используются для организации, соответственно, ввода (т. е. чтения файла) и вывода (т. е. записи в файл).

    В свою очередь, экземплярами классов istream, ostream являются cin, cout, cerr, с помощью которых осуществляется так называемый стандартный ввод/вывод - ввод со стандартного вводного устройства (которым по умолчанию является клавиатура) и вывод на стандартное выводное устройство (которым по умолчанию является экран). Таким образом, включение в программу класса fstream оказывается достаточным для организации как стандартного, так и файлового ввода/вывода.

    Файловый ввод/вывод организован с помощью переопределенных в поточных классах операций включения (<<) и извлечения (>>). Ранее мы видели, что это операции сдвига влево и сдвига вправо битов в переменной типа int, но в поточных классах C++ они обрели новую функциональность.

    Чтобы работать с файлом, его сначала следует открыть: связать со специальной структурой, в которой задаются характеристики файла (размер буфер ввода/вывода, состояние файла, последняя прочитанная запись и т. п.). Связь эта выполняется с помощью функции ореn(), входящей в один из классов, кототый определяет ввод/вывод (fstream, istream, ostream). Поэтому, чтобы выполнить такую функцию, следует сначала создать экземпляр соответствующего класса (для получения доступа к этой функции). Если мы, например, хотим выполнять вывод в файл (т. е. запись в него), то следует создать экземпляр класса ostream: ostream exp; и затем выполнить функцию ехр.ореn(). В скобках должны быть параметры этой функции: имя открываемого файла и способ открытия файла, в котором задаются сведения о том, как собирается пользователь работать с файлом (читать его, писать в него или делать что-то еще).

    После того как файл открыт, собственно для чтения или записи уже используют операции включения/извлечения (<<, >>). Если использовать пример с экземпляром ехр класса ostream, то можно записать так:

  ехр << "строка текста" << i << j << endl;

    Здесь i, j - некоторые переменные (например, int i; float j;), endl - переход на новую строку.

    После того как работа с файлом закончена, следует закрыть файл, чтобы разорвать связь с той структурой, с которой файл был связан при его открытии. Это необходимо, чтобы дать возможность другим файлам "открываться". Этот акт выполняется с помощью метода close() того же экземпляра класса, который мы создавали, чтобы выполнить функцию open(). В нашем случае следовало бы написать:

  ехр.close();

    На следующем шаге мы рассмотрим ввод/вывод с использованием разных классов.




Предыдущий шаг Содержание Следующий шаг