Стандартный поток ввода си. Потоковые классы
Потоки в 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