Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 155; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.15 (0.007 с.) |