Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Глава 12. Классы ввода-вывода
Классы стандартной библиотеки В C++ классы стандартной библиотеки разделяются на группы в соответствии со своим назначением. 1. Потоковые классы – предназначены для управления потоками данных между оперативной памятью и внешними устройствами, а также в пределах оперативной памяти. 2. Строковые классы – предназначены для удобной защищенной от ошибок работы с символьными строками 3. Контейнерные классы – реализуют наиболее распространенные структуры для хранения данных (списки, векторы, очереди). В библиотеки контейнерных классов также входят алгоритмы, использующие эти контейнеры. 4. Итераторы – предназначены для унификации доступа к элементам контейнерных и других классов. 5. Математические классы – поддерживают эффективную обработку массивов численных данных с плавающей точкой и работу с комплексными числами. 6. Диагностические классы – обеспечивают динамическую идентификацию типов и объектно-ориентированную обработку ошибок. 7. Остальные классы – обеспечивают динамическое распределение памяти и адаптацию к локальным особенностям программы, обработку функций, объектов и т.д. Контейнерные классы, итераторы и алгоритмы классов объединяют в библиотеки шаблонов.
Потоковые классы. Потоки в C++ отличаются от функций ввода/вывода в C, обеспечивая работу как со стандартными потоками данных, так и с типами данных, определяемыми пользователем, а также обеспечивая единообразный и понятный синтаксис. Чтение данных из потока называется извлечением, а вывод данных в поток – включением. Поток в C++ - это последовательность байтов, независимых от конкретного устройства, с которого производится считывание данных. Обмен с потоком для увеличения скорости передачи данных производится через специальную область памяти – буфер. Передача данных выполняется при выводе после заполнения буфера и при вводе, если буфер исчерпан. По направлению обмена данных потоки делят на три группы: · входные потоки (позволяющие вводить данные в память) · выходные потоки (осуществляющие вывод данных из памяти) · двунаправленные потоки В зависимости от вида устройства, с которым работает поток данных, их делят на: · стандартные потоки · файловые потоки
· строковые потоки Стандартные потоки предназначены для передачи данных с клавиатуры на экран (это: stdin - стандартный поток ввода данных, stdout - стандартный поток вывода данных и stderr - стандартный поток ошибок). Файловые потоки – для обмена информацией с файлами. Строковые потоки – для работы с массивами символов в оперативной памяти. Для поддержки этих потоков в C++ стандартная библиотека содержит иерархию классов, построенную на основе двух базовых классов: ios – базовый класс, содержащий общие для ввода/вывода поля и методы streambuf – обеспечивает буферизацию потоков и их взаимодействие с физическими устройствами. От этих базовых классов наследуются классы istream и ostream для входных и выходных потоков соответственно. Эти потоки являются базовыми для iostream, который позволяет реализовывать двунаправленные потоки. Ниже в иерархии находятся файловые и строковые потоки: · isstrinstream – класс входного строкового потока · osstringstream – класс выходного строкового потока · stringstream – класс двунаправленного строкового потока · ifsteam – класс входных файловых потоков · ofstream – класс выходных файловых потоков · fstream – класс двунаправленных файловых потоков Стандартный поток Чтобы использовать стандартные потоки ввода-вывода нужно включать заголовочный файл <iostream.h>.Заголовочный файл <iostream.h> кроме описания потоков ввода-вывода содержит описание ещё и предопределенных объектов.
Эти объекты создаются при включении в программу файла iostream. При этом становятся доступными средства ввода-вывода. Соответствующие операции << и >> определены путем перегрузки операции сдвига. Пример 1 #include <iostream.h > Int main() { int i; cin>>i; cout << ”Output i = ”<< i; return 0; } Операции извлечения и чтения в качестве результата своего выполнения формирует ссылку на объект типа istream для извлечения и на объект типа ostream для чтения.
Файловые потоки. Под файлом обычно подразумевается поименованная информация на внешнем носителе. Практически в С++ файл рассматривается как последовательный поток байтов. Каждый файл завершается маркером EOF или указанием числа байтов, записанных в служебную структуру данных, поддерживаемую соответствующей системой. По способу доступа файлы делятся на последовательные и файлы с произвольным доступом. Файлы с последовательным доступом – файлы, в которых чтение и запись производятся сначала, байт за байтом. Файлы с произвольным доступом допускают чтение и запись в произвольной позиции. Стандартная библиотека содержит три класса для работы с файлами: · Ifstream · ofstream · fstream Наследуют перегруженные операции <<, >>. Использование файловых потоков в программе предполагает выполнение следующих операций: 1) создание потока 2) открытие потока и связывание его с файлом 3) обмен данных (ввод / вывод) 4) уничтожение потока 5) закрытие файла Каждый класс файловых потоков содержит конструкторы, с помощью которых можно создавать объекты этих классов различными способами. Конструкторы без параметров создают объект соответствующего класса, не связывая его с файлом. Конструктор с параметром создает объект соответствующего класса, открывает файл с указанным именем и связывает файл с объектом. ifstream(char *name, int mode = ios::in); ofstream(char *name, int mode = ios::out); fstream(char *name, int mode = ios::in [ios::out]); Вторым параметром конструктора является режим открытия файла. Если установленное по умолчанию значение не устраивает программиста, можно указать другой, составив его из битовых масок, определенных в классе ios.
Открыть файл в программе можно с использованием конструктора, либо методом open. В open должны быть такие же параметры, как и в соответствующем конструкторе. Пример 2 ifstream inpf(‘input.txt’,.ios::n| ios::nocreate); // использование конструктора if(!inpf) { cout << “ невозможно открыть файл для чтения”; return 1; } ofstream f;
|
|||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 94; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.17.237 (0.012 с.) |