Управление операциями консольного ввода-вывода в C++

Опубликовано: 14 Сентября, 2022

Каждая программа принимает некоторые данные в качестве входных данных и генерирует обработанные данные в качестве выходных данных, следуя знакомому циклу ввода-вывода. Важно знать, как предоставить исходные данные и представить результаты в желаемом виде. Использование cin и cout уже известен с операторами >> и << для операций ввода и вывода. В этой статье мы обсудим, как контролировать способ печати вывода.

C++ поддерживает широкий набор функций и операций ввода-вывода. Эти функции используют расширенные возможности C++, такие как классы, производные классы и виртуальные функции. Он также поддерживает весь набор функций ввода/вывода C и, следовательно, может использоваться в программах на C++, но их использование должно быть ограничено по двум причинам.

  1. Методы ввода-вывода в C++ поддерживают концепцию ООП.
  2. Методы ввода-вывода в языке C не могут обрабатывать определяемые пользователем типы данных, такие как класс и объект.

Он использует концепцию потоков и потоковых классов для реализации своих операций ввода-вывода с консольными и дисковыми файлами.

С++ поток

Система ввода-вывода в C++ предназначена для работы с широким спектром устройств, включая терминалы, диски и ленточные накопители. Хотя каждое устройство очень отличается, система ввода-вывода предоставляет программатору интерфейс, независимый от фактического устройства, к которому осуществляется доступ. Этот интерфейс известен как поток .

  • Поток — это последовательность байтов.
  • Исходный поток, предоставляющий данные программе, называется входным потоком.
  • Целевой поток, который получает вывод из программы, называется выходным потоком.
  • Данные во входном потоке могут поступать с клавиатуры или любого другого устройства ввода.
  • Данные в потоке вывода могут поступать на экран или любое другое устройство вывода.

C++ содержит несколько предопределенных потоков, которые автоматически открываются, когда программа начинает выполняться. К ним относятся cin и cout . Известно, что cin представляет поток ввода, подключенный к стандартному устройству ввода (обычно клавиатуре), а cout представляет поток вывода, подключенный к стандартному устройству вывода (обычно экран).

Потоковые классы С++

Система ввода-вывода C++ содержит иерархию классов, которые используются для определения различных потоков для работы как с консольными, так и с дисковыми файлами. Эти классы называются потоковыми классами. Иерархия классов потоков, используемых для операций ввода и вывода, находится в блоке консоли. Эти классы объявлены в заголовочном файле iostream . Этот файл должен быть включен во все программы, взаимодействующие с консолью.

ios — это базовый класс для istream (входной поток) и ostream (выходной поток), которые, в свою очередь, являются базовыми классами для iostream (входной/выходной поток). Класс ios объявляется виртуальным базовым классом, так что только одна копия его членов наследуется iostream.

Класс ios обеспечивает базовую поддержку форматированных и неформатированных операций ввода-вывода. Класс istream предоставляет средства форматированного и неформатированного ввода, а класс ostream (путем наследования) предоставляет средства форматированного вывода.

Класс iostream предоставляет средства для обработки как входных, так и выходных потоков. Три класса добавляют задание к этим классам:

  • istream_withassign
  • ostream_withassign
  • iostream_withassign

Табличное представление классов потоков для работы с консолью :

Имя класса

Содержание

ios (класс общего потока ввода/вывода)

  • Содержит базовые средства, которые используются всеми другими классами ввода и вывода.
  • Также содержит указатель на объект буфера (объект streambuf )
  • Объявляет константы и функции, необходимые для обработки форматированных операций ввода и вывода.

istream (входной поток)

  • Он наследует свойства ios
  • Он объявляет функции ввода, такие как get(), getline() и read().
  • Он содержит оператор извлечения перегрузки >>

ostream (выходной поток)

  • Он наследует свойства ios .
  • Он объявляет функции ввода, такие как put() и write().
  • Он содержит оператор извлечения перегрузки << .

iostream (входной/выходной поток)

  • Наследует свойства потоков ios и ostream посредством множественного наследования и, таким образом, содержит все функции ввода и вывода.

Streambuf

  • Он обеспечивает интерфейс к физическим устройствам через буферы.
  • Он действует как база для файла ios, используемого классом filebuf.
C++