68934

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

Лекция

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

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

Украинкский

2014-09-27

35 KB

7 чел.

Лекція № 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).


 

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

45872. Автоматизация и механизация литейного производства – автоматическая линия литья в ПГФ 1.53 MB
  Автоматизация и механизация литейного производства автоматическая линия литья в ПГФ. Автоматич. процесса и соединённого автоматич. траспортом а также снабжённого автоматич.
45873. Основные понятия заготовок 36 KB
  Прогрессивные заготовки должны отвечать след.Формы и размеры заготовки должны быть так приближены формы и размерам детали. Технологический процесс получения заготовок заключается в последовательном изменении формы размеров шероховатости поверхности а также свойств исходной заготовки и её материала. процесса получения заготовки.
45874. Виды механической обработки материалов резанием 77.21 KB
  Виды обработки резанием Согласно действующему в нашей стране стандарту ГОСТ 25761 83 все виды механической обработки металлов и материалов резанием подразделяются на лезвийную и абразивную обработку. К лезвийной обработке относятся все виды обработки резанием которые осуществляются лезвийным инструментом: точение растачивание долбление сверление зенкерование развертывание фрезерование протягивание. Фрезерование применяют для обработки плоскостей пазов с прямолинейным и винтовым направлением шлицев тел вращения разрезки...
45875. Тепловые явления при резании. Баланс теплоты при резании металлов. Температура резания 860.6 KB
  Температура резания. Исследования процессов теплообразования при резании позволили определить направление и интенсивность тепловых потоков градиенты температур в контактных областях и характеристики температурного поля в зоне резания деталью и окружающей средой а также получить качественное и количественное представление о тепловом балансе при резании различных материалов. Ребиндера установлено что более 995 работы резания переходит в тепло. Температура резания.
45876. Качество обрабатываемой поверхности и поверхностного слоя детали 61.08 KB
  Качество обрабатываемой поверхности и поверхностного слоя детали. Качество детали можно определить геометрическими и физикомеханическими характеристиками её поверхности и поверхностного слоя. Показатели качества детали: геометрические характеристики шероховатость волнистость отклонение формы; физикомеханические характеристики микротвёрдость остаточное напряжение структура. Упрочнение поверхностного слоя: при обработке детали под действием сил резания поверхностный слой металла испытывает упругопластическое деформирование.
45877. Изнашивание режущего инструмента в процессе резания. Критерии и кривые износа 168.52 KB
  Изнашивание режущего инструмента в процессе резания. В процессе работы инструмента в результате высокого контактного давления высокой температуры в зоне резания и большой относительной скорости перемещения происходит износ лезвий инструмента. Различают следующие виды износа: 1 Износ по задней поверхности инструмента. 2 Износ по передней поверхности инструмента.
45878. Критерии оптимизации режима резания при точении. Выбор инструментального материала для резцов 108.19 KB
  Критерии оптимизации режима резания при точении. Основной целью оптимизации является установление таких числовых значений элементов режима резания глубины резания подачи и скорости которые позволяют наиболее производительно с наименьшими затратами осуществлять механическую обработку детали и надежно обеспечить заданное качество обработки. Определить глубину резанияt: t = Dd 2 мм. При черновой обработке необходимо стремиться работать с максимально возможной в данных условиях глубиной резания равной всему припуску или большей части...
45879. Смазочно-охлаждающие технологические среды: назначение, требования, состав, методы отчистки и способы подачи 17.26 KB
  Способы подачи СОЖ: Полить струей жидкости на переднюю поверхность или через насадку с отверстием со стороны задней поверхности. Высоконапорная подача 152 МПа расход СОЖ уменьшается примерно в 20 раз. Функциональные свойства 1Под смазочным действием понимают способность СОЖ образовывать на контактных поверхностях инструмента на стружке и детали прочные пленки полностью или частично предотвращающие соприкосновение передней поверхности со стружкой и задних поверхностей с поверхностью резания. 2Охлаждающее дейстте СОЖ заключается в...
45880. Ультразвуковое резание. Резание с нагревом заготовки 15.43 KB
  Функции: непрерывно падают абразив в рабочий зазор и выносят оттуда частицы снятого металла; охлаждают инструмент в зоне резания. Механическая обработка с ультразвуковыми колебаниями является разновидностью резания с вибрациями. Позволяет ликвидировать нарост уменьшить объем зоны опережающей деформации и усадки стружки уменьшить силу резания. В отношении стойкости инструмента удовлетворяют результаты полученные только для быстрорежущего инструмента на низких режимах резания.