68934

Потоки. Класи потоків С++. Вбудовані потоки C++

Лекция

Информатика, кибернетика и программирование

Потоки. Система введення-виводу мови C++, як і її аналог в мові С, оперує потоками. Потік (stream) — це логічний пристрій, одержуючий або передавальний інформацію. Потік пов’язаний з фізичним пристроєм введення-виводу. Всі потоки функціонують однаково, хоча фізичні пристрої

Украинкский

2014-09-27

35 KB

6 чел.

Лекція № 26

Тема: Потоки. Класи потоків С++

План

  1.  Потоки
  2.  Класи потоків в С++
  3.  Вбудовані потоки C++
  4.  Форматоване введення-виведення

Потоки

Потоки. Система введення-виводу мови C++, як і її аналог в мові С, оперує потоками. Потік (stream) — це логічний пристрій, одержуючий або передавальний інформацію. Потік пов'язаний з фізичним пристроєм введення-виводу. Всі потоки функціонують однаково, хоча фізичні пристрої, з якими вони пов'язані, можуть бути самими різними. Оскільки всі потоки однакові, одна функція введення-виводу може працювати з різними типами фізичних пристроїв. Наприклад, за допомогою однієї функції можна виводити дані як на принтер, так і на екран.

Класи потоків в мові C++

Як відомо, для системи введення-виводу необхідний заголовок <iostream>. У цьому заголовку визначена досить складна ієрархія класів, що підтримують операції введення-виводу. Спочатку визначаються шаблонні класи введення-виводу. Шаблонний клас є схемою, в якій не уточнюється тип даних, якими вона оперує. Після визначення шаблонних класів можна створювати їх конкретизації. Стандарт мови C++ створює дві спеціалізації шаблонних класів введення-виводу: одну для восьмибітових символів, а іншу — для розширених. У книзі використовуються тільки класи для восьмибітових символів, оскільки вони застосовуються ширше. Проте описана технологія застосовна і до розширених символів.

Система введення-виводу мови C++ побудована на основі двох споріднених, але різних ієрархій шаблонних класів. У основі першої ієрархії лежить клас b_streambuf, призначений для низькорівневого введення-виводу. Якщо в програмі не використовуються особливі процедури введення-виводу, клас basic_streambuf, як правило, не потрібний. У звичайних застосуваннях найчастіше застосовується ієрархія класів, побудована на основі класу basic_ios, що забезпечує високорівневі операції введення-виводу, перевірку помилок і аналіз інформації про статус потоків. (Клас basic_ios є похідним від класу ios_base, що визначає деякі нешаблонні властивості, використовувані класом basic_ios.) Клас basic_ios використовується як базовий для декількох похідних класів, зокрема basic_istream, basic_ostream і basic_iostream. Ці класи застосовуються для створення потоків, що забезпечують відповідно введення, вивід, а також уведення-виведення.

Як відомо, бібліотека введення-виводу створює дві спеціалізації шаблонних класів, що входять в ієрархію: одну для восьмибітових символів, а іншу — для розширених. Нижче приводиться список імен шаблонних класів, призначених для введення-виводу звичайних і розширених символів.

Шаблонні класи Класи звичайних символів Класи розширених символів

basic_streambuf streambuf   wstreambuf

basic_ios  ios    wios

basic_istream istream   wistream

basic_ostream ostream   wostream

basic_iostream iostream   wiostream

basic_fstream fstream   wfstream

basic_ifstream ifstream   wifstream

basic_ofstream ofstream   wofstream

У книзі використовуються лише класи, призначені для введення-виводу звичайних символів, оскільки саме такі операції виконуються найчастіше. Їх імена співпадають з іменами відповідних класів із старої бібліотеки. Саме тому стара і нова бібліотеки введення-виводу сумісні на рівні початкової коди.

І останнє: клас ios містить велика кількість функцій-членів і змінних, керівників основними операціями над потоками або що спостерігають за їх виконанням. Ми часто на нього посилатимемося. Просто слід пам'ятати: включаючи в програму заголовок <iostream>, ви дістаєте доступ до цього важливого класу.

 

Вбудовані потоки в мові C++

На початку виконання програми на мові C++ автоматично відкриваються чотири потоки.

Потоки Значення     Пристрій за умовчанням

сin  Стандартне введення   Клавіатура

cout  Стандартний вивід   Екран

cerr  Стандартне виведення помилок Екран

clog  Варіант потоку cerr, що буферизує Екран

Потоки cin, cout і cerr відповідають потокам stdin, stdout і stderr.

За умовчанням стандартні потоки використовуються для взаємодії з консоллю. Проте в операційних системах, що підтримують перенаправлення потоків введення-виводу (таких як DOS, Unix, OS/2 і Windows), стандартні потоки можна пов'язати з іншими пристроями або файлами. Для простоти в прикладах ми не застосовуватимемо перенаправлення потоків.

Крім того, мову C++ визначає чотири додаткові потоки: win, wout, werr і wlog. Це версії потоків для введення-виводу розширених символів. Для представлення розширених символів використовується тип wchar_t і 16-бітові значення. Як правило, розширені символи застосовуються для підтримки деяких природних мов.

Форматоване уведення-виведення

Мова C++ дозволяє виконувати операції форматованого введення-виводу. Наприклад, можна задати ширину поля, вказати основу числення або визначити кількість цифр після десяткової крапки. Для форматування даних можна застосовувати два схожих, але разных способу. По-перше, можна прямо звернутися до членів класу ios. Зокрема, можна самостійно задавати різні прапори форматування, визначені усередині класу ios, або викликати різноманітні функції-члени. По-друге, у виразах введення-виводу можна використовувати спеціальні функції, звані маніпуляторами (manipulators).


 

А также другие работы, которые могут Вас заинтересовать

38559. Модифікація гена kanMX4, що забезпечує резистентність до антибіотика генетицину 1.36 MB
  Це у значній мірі відбувається тому що клітинний цикл та фізіологічні процеси клітин дріжджів дуже подібні до відповідних процесів людських клітин і тому основні клітинні механізми реплікація ДНК рекомбінація поділ клітини і метаболізм мають багато спільних рис. пар основ плазмідної ДНК яку в деяких штамах складають кіллерні плазміди; мітохондріальний геном 75 тис. Отримані гелі можуть бути використані для проведення Саузернблот аналізу що супроводжується гібридизацією або для ізоляції хромосомної ДНК в чистому вигляді. Досить...
38560. Связь социально-психологической адаптации студентов с тактиками самопрезентации 492.5 KB
  ТЕОРЕТИЧЕСКИЕ И МЕТОДИЧЕСКИЕ ОСНОВЫ ИССЛЕДОВАНИЯ СВЯЗИ СОЦИАЛЬНОПСИХОЛОГИЧЕСКОЙ АДАПТАЦИИ И ТАКТИК САМОПРЕЗЕНТАЦИИ СТУДЕНТОВ ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИЗУЧЕНИЯ СОЦИАЛЬНОПСИХОЛОГИЧЕСКОЙ АДАПТАЦИИ СТУДЕНТОВ АНАЛИЗ ДАННЫХ ЭМПИРИЧЕСКОГО ИССЛЕДОВАНИЯ СВЯЗИ СОЦИАЛЬНОПСИХОЛОГИЧЕСКОЙ АДАПТАЦИИ И ТАКТИК САМОПРЕЗЕНТАЦИИ СТУДЕНТОВ [1.5] ПРОГРАММА ЭМПИРИЧЕСКОГО ИССЛЕДОВАНИЯ СВЯЗИ СОЦИАЛЬНОПСИХОЛОГИЧЕСКОЙ АДАПТАЦИИ И ТАКТИК САМОПРЕЗЕНТАЦИИ СТУДЕНТОВ [1.
38561. Описании языковой картины мира (ЯКМ) субъекта делового текста (завещателя) на материале памятника деловой письменности Северной Руси XVIII веке 239.5 KB
  Теоретические аспекты субъекта текста. Проблематика выпускной квалификационной работы состоит в описании языковой картины мира ЯКМ субъекта делового текста завещателя на материале памятника деловой письменности Северной Руси XVIII в. Исследования такого типа актуальны потому что они позволяют через лексическое значение слов выявить влияние культурного контекста на лексику особенности социальноэкономической и духовной культуры поморов XVIIXVIII вв. разработать методику лингвокультурологической обработки исследуемого материала и...
38562. ЗНАКИ БОЖЕСТВЕННОГО В ТВОРЧЕСТВЕ ОЛИВЬЕ МЕССИАНА НА ПРИМЕРЕ СИМФОНИИ «ТУРАНГАЛИЛА» 5.39 MB
  Проекция божественного в анализе симфонии Турангалила Оливье Мессиана6 Интродукция Песнь любви I вторая часть Турангалила I третья часть Песнь любви II четвёртая часть Радость крови звёзд пятая часть Сад сна любви шестая часть Турангалила II седьмая часть Развитие любви восьмая часть Турангалила III девятая часть Финал 4. Заложенное ещё в консерваторских классах Поля Дюка увлечение индийской перуанской японской культурой нашло своё отражение в цикле из 12 песен Любви и...
38564. Осуществление кадастровых отношений 4.8 MB
  Законы и иные нормативные правовые акты субъектов РФ не могут противоречить федеральным законам. В случае противоречия между федеральным законом и иным актом, изданным в РФ, действует федеральный закон.
38565. Усовершенствование технологии производства поковок флокеночувствительной стали марки 40ХН2МА, забракованных при УЗК 1.16 MB
  Завод специализируется на производстве металлопродукции нержавеющих инструментальных легированных конструкционных быстрорежущих штамповых жаропрочных и прецизионных марок стали и сплавов поставка которых осуществляется на внутренний и внешний рынок. Завод производит около 1000 марок стали и сплавов выплавленных в мартеновских открытых дуговых и индукционных электропечах рафинированных электрошлаковым ЭШП и вакуумнодуговым ВДП переплавами в агрегате ковшпечь АКП. Конструкционные стали должны обладать высокой конструктивной...
38566. ДИПЛОМНАЯ РАБОТА ЮРИСТА. Учебно-методическое пособие 290 KB
  Методические указания предназначены для оказания помощи курсантам в определении темы дипломной работы в ее написании оформлении и защите по всем юридическим дисциплинам. Курсанты успешно выполнившие учебный план и сдавшие государственные экзамены должны подтвердить свою квалификацию во время защиты дипломной работы. Написание итоговой квалификационной работы трудоемкий процесс требующий от курсанта глубоких знаний умения анализировать обобщать разбираться в сложных вопросах юридической теории и практики. Выполнение и защита дипломной...
38567. Затраты, связанные с производственной деятельностью ООО «Трест – 2» 3.09 MB
  Сущность и классификация затрат Сущность затрат на производство и издержек производства не тождественны между собой в теоретическом и практическом планах как на уровне общественного производства так и в макроэкономике в отечественной и зарубежной практике. Затраты на производство отечественных предприятий состоят из их собственных денежных расходов а издержки зарубежных фирм включают нормативную прибыль [7c. Наиболее общее понятие издержек производства фирм в зарубежных учебниках определяется как затраты на вводимые факторы или...