Стандартный поток ввода си. Потоковые классы

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

Обмен с потоком для увеличения скорости передачи данных производится через специальную область памяти – буфер. Передача данных выполняется при выводе после заполнения буфера и при вводе, если буфер исчерпан. По направлению обмена данных потоки делят на три группы:

  • входные потоки (позволяющие вводить данные в память)
  • выходные потоки (осуществляющие вывод данных из памяти)

В зависимости от вида устройства, с которым работает поток данных, их делят на:

  • стандартные потоки
  • файловые потоки
  • строковые потоки

Стандартные потоки предназначены для передачи данных с клавиатуры на экран (это: stdin - стандартный поток ввода данных, stdout - стандартный поток вывода данных и stderr - стандартный поток ошибок). Файловые потоки – для обмена информацией с файлами. Строковые потоки – для работы с массивами символов в оперативной памяти. Для поддержки этих потоков в C++ стандартная библиотека содержит иерархию классов, построенную на основе двух базовых классов:

  • ios – базовый класс, содержащий общие для ввода/вывода поля и методы
  • streambuf – обеспечивает буферизацию потоков и их взаимодействие с физическими устройствами.

От этих базовых классов наследуются классы istream и ostream для входных и выходных потоков соответственно. Эти потоки являются базовыми для iostream , который позволяет реализовывать двунаправленные потоки. Ниже в иерархии находятся файловые и строковые потоки:

  • isstrinstream – класс входного строкового потока
  • osstringstream – класс выходного строкового потока
  • stringstream – класс двунаправленного строкового потока
  • ifsteam – класс входных файловых потоков
  • ofstream – класс выходных файловых потоков
  • fstream – класс двунаправленных файловых потоков

Стандартный поток

Чтобы использовать стандартные потоки ввода-вывода нужно включать заголовочный файл .Заголовочный файл кроме описания потоков ввода-вывода содержит описание ещё и предопределенных объектов.


Таблица 1

Объект Класс Описание
cin istream связывается с клавиатурой (со стандартным буфером ввода)
cout ostream связывается с экраном (со стандартным буфером вывода)
cerr ostream связывается с экраном (стандартный не буферизованный вывод, куда направляются сообщения об ошибках)
clog ostream связывается с экраном (стандартный буферизованный вывод, куда направляются сообщения об ошибках)

Эти объекты создаются при включении в программу файла iostream . При этом становятся доступными средства ввода-вывода. Соответствующие операции > определены путем перегрузки операции сдвига.


#include int main() { int i; cin>>i;

cout