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).


 

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

23508. Фразеологизмы новозаветного происхождения в современном русском языке 982.5 KB
  Курск 1998 [1] Введение [2] Глава I [3] Краткие сведения по некоторым теоретическим вопросам фразеологии русского языка. [5] Новозаветные по происхождению фразеологизмы как элемент фразеологической системы русского языка [5. Библейская фразеология и проблемы культуры речи [10] Заключение [11] Список использованной литературы [12] Приложение № 1 Введение О фразеологии написано множество статей книг диссертаций а интерес к этой области языка не иссякает ни у исследователей ни у тех кто просто неравнодушен к слову.
23509. ОБ ОСНОВНЫХ ТИПАХ ФРАЗЕОЛОГИЧЕСКИХ ЕДИНИЦ В РУССКОМ ЯЗЫКЕ 159 KB
  Шахматов в своем Синтаксисе русского языка настойчиво подчеркивал чрезвычайную важность вопроса о неразложимых сочетаниях слов не только для лексикологии resp. Под разложением словосочетания писал А. Между тем подобное разложение для некоторых словосочетаний оказывается невозможным. В неразложимых словосочетаниях связь компонентов может быть объяснена с исторической точки зрения но она непонятна немотивирована с точки зрения живой системы современных грамматических отношений.
23510. СТИЛЬ ПИКОВОЙ ДАМЫ 430.5 KB
  ВИНОГРАДОВ СТИЛЬ ПИКОВОЙ ДАМЫ€œ Пушкинский стиль пушкинская манера лирического выражения и повествования почти не описаны и не исследованы. Современнее и резче всего пушкинская манера повествования обозначилась в структуре Пиковой Дамы€œ. Сюжет Пиковой Дамы€œ и профессиональноигрецкие анекдоты В Пиковой Даме€œ семантическое многообразие доведено до предела. Игра в фараон в Пиковой Даме€œ не столько тема авторского повествования сколько тема разговора между персонажами.
23511. Смысл: семь дихотомических признаков 93.5 KB
  Новиков Смысл: семь дихотомических признаков Смысл относится к тем загадочным явлениям которые считаются как бы общеизвестными поскольку постоянно фигурируют как в научном так и обыденном общении. Иногда допускается что смысл принадлежит к тем наиболее общим категориям которые не подлежат определению и должны восприниматься как некоторая данность. В настоящее время в связи с необходимостью решения целого ряда актуальных задач как теоретического так и прикладного характера где понятие смысла играет ключевое значение требуются...
23512. Словообразование как наука 197 KB
  В этом аспекте словообразование рассматривается как одно из важнейших средств пополнения словарного состава языка. Новые слова в языке образуются по определенным правилам моделям схемам – по определенным образцам которые образуют определенный языковой механизм который и называется словообразованием. В языке различают непроизводные слова ех: лес река море стол идти веселый синий – примарные первообразные и производные слова – образованные на базе существующих слов ех: морской речник развеселый лесной. Производные слова...
23513. Русское слово в свете структурно-семантического описания (словообразовательный и морфемный анализ) 240.5 KB
  Роженцова Словообразовательный и морфемный анализ как способ исследования структурносемантических особенностей производного слова Одним из важнейших результатов изучения курса морфемики и словообразования современного русского языка является умение дать словообразовательный и морфемный анализ любого слова. Это умение опирается на теоретические представления о том по каким законам строятся слова в языке как функционируют морфемы как организуется значение производного слова и т. При освоении каждого этапа рекомендуется опираясь на данные...
23514. Морфемика. Морфонология. Словообразование 254 KB
  Оглавление Объяснительная записка 4 Словоизменительные аффиксы и принципы их вычленения 6 Формообразовательные аффиксы и принципы их вычленения 12 Словообразовательные аффиксы и принципы их вычленения 21 Корень как главная морфема в структуре слова 32 Полный морфемный анализ 35 Разбор по составу 38 Библиографический список 39 Объяснительная записка Морфемика – это лингвистическая дисциплина изучающая систему морфем языка типы морфем их строение сочетаемость и морфемную структуру слова. Одним из важнейших результатов изучения курса...
23515. ФОНЕТИКА, ГРАФИКА, ОРФОГРАФИЯ 777.5 KB
  Таким образом своей основной задачей мы считали системное изложение фактов русского языка в соответствии с современными представлениями об устройстве фонетического компонента языка2. Этим обусловлено включение некоторых разделов ранее отсутствовавших в учебниках таких как Перцептивный аспект фонетических описаний Артикуляционная база русского языка Разговорная речь а также существенное расширение сведений из области речепроизводства и речевой акустики при изложении основ перцептивной фонетики мы основывались на тех сведениях...