Скачать 449.68 Kb.
|
Ввод – вывод данных В программах по С++ можно равноправно использовать две библиотеки ввода – вывода: стандартную библиотеку функций ввода-вывода языка Си и библиотеку классов , специально созданную для С++. Библиотека функций становится доступной, как только к программе будет подключен файл <stdio.h> (или На протяжении всего курса мы использовать средства ввода-вывода библиотеки классов. Начнем рассмотрение с этой библиотеки. Файл iostream.h (<iostream>) связывает компилируемую программу с библиотекой ввода – вывода , построенной на основе механизма классов. ( stream – поток, i - input , o – output) Средства, описанные в этом файле, предназначены для извлечения данных из потоков и для включения данных в потоки. Поток – это логическое понятие, которое нужно воспринимать как обмениваемая последовательность байтов (символов). Система ввода/вывода позволяет связывать потоки с различными физическими устройствами. Обмен производится между оперативной памятью и внешними устройствами (файл на диске, принтер, клавиатура, дисплей, стример и т.п.), или между различными участками оперативной памяти. Итак, поток – это последовательность байт, не зависящая от тех конкретных устройств, с которыми ведется обмен данными. При обмене часто используется вспомогательный участок оперативной памяти – буфер потока. При выводе в буфер помещаются данные, перед тем как они будут переданы внешнему устройству. При вводе данные сначала помещаются в буфер, а затем передаются в область памяти выполняемой программы Буфер потока – вспомогательный участок основной памяти, используемый для хранения данных. Использование буфера при обмене с внешними устройствами повышает скорость передачи данных, так как реальные пересылки осуществляются когда буфер уже заполнен ( при выводе) или пуст (при вводе). Работу по заполнению и очистке буфера берет на себя, как правило, операционная система без явного участия программиста. Задача программиста установить соответствие между последовательностью байтов потока и участвующими в обмене типизированными объектами программы. В современных версиях языка потоки представляются в программах объектами некоторых классов. Используемые потоки делятся в соответствии с логикой обмена на три группы:
Все потоки последовательные: в каждый момент для потока определена позиция обмена (для записи или чтения) и после обмена эта позиция перемещается по потоку на длину передаваемых при обмене данных. Для двунаправленных потоков определены две позиции (записи и чтения). Потоки принято делить на стандартные, строковые и файловые, в зависимости от того, с какими «устройствами» связаны потоки. Стандартные соответствуют передаче данных от клавиатуры в ОП и из ОП к экрану дисплея. Если поток символов в совокупности образует символьный массив в ОП, то говорят о строковом потоке. Обмен данными происходит между различными участками оперативной памяти. Если при использовании потока его символы размещаются на внешнем носителе, то говорят о файловом потоке. Библиотека ввода – вывода, в отличие от других, это библиотека не функций, а классов. Ниже представлена иерархия шаблонов потоковых классов Иерархия шаблоновios_base basic_ios<> basic_ostream<> basic_istream<> basic_iostream<> basic_istringstream<> basic_ostringstream<> basic_stringstream<> basic_ifstream<> basic_ofstream<> basic_fstream<> Шаблон классов basic_streambuf<> и его специализации обеспечивают буферизацию данных во всех классах, которые мы рассмотрим ниже. Обращаться к его методам и данным из прикладных программ обычно не нужно. Эти классы нужны другим производным классам т.к. обеспечивает их методами буферизации данных, однако эти методы обычно явно не используются. Поэтому методы класса streambuf мы подробно рассматривать не будем. basic_streambuf<> basic_filebuf<> basic_stringbuf<> Рассмотрим классы – специализации соответствующих шаблонов , которые программисты активно используют при потоковом вводе-выводе, используя для специализации потока тип данных char (альтернатива –wchar_t и тогда к именам потоков добавится в начале w) : ios - базовый потоковый класс istream - класс входных потоков ostream - класс выходных потоков iostream - класс двунаправленных потоков ввода - вывода istringstream - класс входных строковых потоков ostringstream - класс выходных строковых потоков stringstream - класс двунаправленных строковых потоков ввода - вывода ifstream - класс входных файловых потоков ofstream - класс выходных файловых потоков fstream - класс двунаправленных файловых потоков ввода - вывода |
Федеральной налоговой службы от 27 июня 2005 г. N 7н/саэ-3-10/285 "Об обмене информацией в электронном виде между управлениями Федерального... | Ректор фгбоу впо “Саратовский государственный университет имени Н. Г. Чернышевского” | ||
Установите соответствие между высказываниями каждого говорящего a-f и утверждениями^ данными в списке 1-7, Используйте каждое утверждение,... | Установите соответствие между высказываниями каждого говорящего a f и утверждениями, данными в списке 1 Используйте каждое утверждение,... | ||
Установите соответствие между высказываниями каждого говорящего A–F и утверждениями, данными в списке 1 Используйте каждое утверждение,... | Настоящие Правила определяют порядок заполнения заявления о ввозе товаров и уплате косвенных налогов (далее Заявление) по форме Приложения... | ||
Вы услышите 6 высказываний. Установите соответствие между высказываниями каждого говорящего A–F и утверждениями, данными в списке... | |||
Установите соответствие между высказываниями каждого говорящего 1–6 и утверждениями, данными в списке A–G. Используйте каждое утверждение,... | Установите соответствие между высказываниями каждого говорящего 1–6 и утверждениями, данными в списке A–G. Используйте каждое утверждение,... |
Главная страница   Заполнение бланков   Бланки   Договоры   Документы    |