|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Потоковые классы. Иерархия потоковых классовПоток — это общее название, как ни странно, потока данных. В C++ поток представляет собой объект некоторого класса. Именно поэтому вы могли встретить потоковые объекты cin и cout. Разные потоки предназначены для представления разных видов данных. Например, класс ifstream олицетворяет собой поток данных от входного дискового файла. Программисты на C могут удивиться, какие же преимущества дает использование потоковых классов для ввода/вывода вместо традиционных функций C printf(),scanf(), для файлов — fprintf(), fscanf()... Одним из аргументов в пользу потоков является простота использования. Если вам приходилось когда-нибудь использовать символ управления форматом %d при форматировании вывода с помощью %f в printf(), вы оцените это.Ничего подобного в потоках вы не встретите, ибо каждый объект сам знает, как он должен выглядеть на экране. Это избавляет программиста от одного из ос- Другой причиной является то, что можно перегружать стандартные операторы и функции вставки (<<) и извлечения (>>) для работы с создаваемыми классами. Это позволяет работать с собственными классами как со стандартными типами, что, опять же, делает программирование проще и избавляет от множества ошибок, не говоря уж об эстетическом удовлетворении. Но неужели потоковый ввод/вывод так важен при работе в среде с графическим интерфейсом пользователя, такой, как, например, Windows, где непосредственный вывод текста на экран не используется вообще? Неужели в наше время еще нужны потоки C++? Оказывается, да, нужны. Потому что это лучший способ записывать данные в файл, лучший способ организации данных в памяти для последующего использования при вводе/выводе текста в окошках Иерархия потоковых классов Потоковые классы имеют довольно сложную иерархическую структуру. На рис. показана организация важнейших из них Мы уже встречались с использованием некоторых потоковых классов. Операция извлечения >> является методом класса istream, операция вставки << —методом класса ostream. Оба этих класса являются наследниками ios. Объект cout, представляющий собой стандартный выходной поток, который обычно выводит на экран данные, является предопределенным объектом класса ostream_
На рис. видно, что класс ios является базовым для всей иерархии. Он содержит множество констант и методов, общих для операций ввода/вывода любых видов. Некоторые из них, такие, как флаги форматирования showpoint и fixed, мы уже встречали. В классе ios есть также указатель на класс streambuf, значением которого является адрес текущего буфера памяти. С помощью буфера производится обмен данными (запись или чтение). Кроме того, ios содержит некоторые низкоуровневые программы для обработки этих данных. В обычной ситуации вам не нужно заботиться о классе streambuf, обращение к которому из других классов происходит автоматически. Классы istream и ostream являются наследниками ios и предназначены для ввода и вывода соответственно. Класс istream содержит такие функции, как get(), getline(), read() и перегружаемую операцию извлечения (>>), тогда как класс ostream содержит функции put(), write() и перегружаемую операцию вставки (<<). Класс iostream — наследник одновременно классов istream и ostream. Его производные классы могут использоваться при работе с такими объектами, как дисковые файлы, которые могут быть открыты одновременно для записи и чтения. Три класса — istream_withassign, ostream_withassign и iostream_withassign — являются наследниками istream, ostream и iostream
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |