Авторы: ,

Рубрика: Информатика

Опубликовано в Молодой учёный №11 (145) март 2017 г.

Дата публикации: 18.03.2017

Статья просмотрена: 34 раза

Библиографическое описание:

Бакаев И. И., Шафиев Т. Р. Методика применения манипуляторов в потоках вывода в языке С++ // Молодой ученый. — 2017. — №11. — С. 34-36. — URL https://moluch.ru/archive/145/40558/ (дата обращения: 24.04.2018).



В C++ ввод/вывод данных производится потоками, т. е. последовательностями байтов. При операциях ввода байты направляются от устройства (например, клавиатуры, дисковода, сетевой платы) в основную память. В операциях вывода поток байтов направляется из основной памяти на устройство (например, экран монитора, принтер, дисковод, сетевую плату).

Специфический смысл этим байтам придают прикладные программы. Байты могут представлять ASCII-символы, сырые данные внутреннего формата, графические изображения, оцифрованную речь, цифровое видео или любой другой вид информации, с которой работает приложение.

Системные механизмы ввода/вывода должны обеспечивать целостное и надежное перемещение байтов данных от устройств в память (и наоборот). Передача данных нередко связана с механическим движением, например, вращением магнитного диска, протяжкой ленты или нажатием клавиш на клавиатуре. Время, которое уходит на обмен данными с такими устройствами, обычно значительно превышает то, что требуется процессору на обработку этих данных. Поэтому операции ввода/вывода требуют тщательного планирования и настройки для того, чтобы обеспечивалась максимальная производительность системы.

В C++ имеются возможности ввода/вывода «низкого уровня» и «высокого уровня». Низкоуровневый, т. е. бесформатный ввод/вывод обычно состоит в передаче заданного числа байт от устройства в память или из памяти устройству. В таких операциях единицей информации является байт. Операции низкого уровня способны быстро передавать большие объемы информации, но в не слишком удобной для человека форме. Люди предпочитают пользоваться операциями ввода/вывода высокого уровня, т. е. форматируемым вводом/выводом, в котором байты группируются в осмысленные единицы данных вроде целых чисел, чисел с плавающей точкой, символов, строк и определяемых пользователем типов. Такой, ориентированный на тип, подход пригоден для большинства задач ввода/вывода, кроме обработки файлов большого объема. [1] Чтобы оптимизировать потоков ввод/вывода используются манипуляторы.

В C++ имеются различные манипуляторы потоков, которые служат задачам форматирования. Манипуляторы могут производить установку ширины поля, задание точности, установку и сброс флагов форматирования, задание символа-заполнителя, очистку потоков, передачу в выходной поток символа новой строки (со сбросом потока), передачу в выходной поток нуль-символа, пропуск пробельных символов во входном потоке. [1]

Поток ввода-вывода — это логическое устройство, предназначенное для приема и выдачи информации пользователю. Поток связан с физическим устройством с помощью системы ввода-вывода С++. [3]

Операции ввода/вывода выполняются с помощью классов istream (потоковый ввод) и ostream (потоковый вывод). Третий класс, iostream, является производным от них и поддерживает двунаправленный ввод/вывод. Для удобства в библиотеке определены три стандартных объекта-потока:

‒ cin — объект класса istream, соответствующий стандартному вводу. В общем случае он позволяет читать данные с терминала пользователя;

‒ cout — объект класса ostream, соответствующий стандартному выводу. В общем случае он позволяет выводить данные на терминал пользователя;

‒ cerr — объект класса ostream, соответствующий стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы. [2]

В статье рассмотрен вопрос применения манипуляторов в оператор cout. Начинающие первом делом работают с операторами ввода/вывода. Чтобы взять результат в консольном окне, им понадобится оператор cout. Если задача имеет отношение к системе счисления, тогда используются dec, oct, hex и setbase манипуляторы.

Манипуляторы — это объекты, определенные в заголовочном файле iomanip, которые может управлять потоками ввод-вывода (чтобы иметь возможность пользоваться манипуляторами, вы должны не забыть включить iomanip в программу). Единственное преимущество манипуляторов в том, что программа может включать их прямо в поток, не прибегая к вызову отдельной функции. [5]

Целые числа обычно интерпретируются как десятичные (по основанию 10) значения. Чтобы изменить основание системы счисления, в которой поток будет интерпретировать целые числа, используют манипулятор hex для шестнадцатеричной системы (по основанию 16) и манипулятор oct для восьмеричной (по основанию 8). Манипулятор потока dec возвращает поток к десятичной системе счисления. [1]

Основание системы счисления в потоке также можно изменить манипулятором потока setbase, у который имеется один целый аргумент, принимающий значения 10, 8 или 16 для основания системы счисления. Чтобы использовать манипуляторы, нам необходимо включить в программу заголовочный файл #include. [4]

Рассмотрим на примерах.

#include // заголовочные файлы

#include // заголовочные файлы

#include // заголовочные файлы

using namespace std;

int main()

{

setlocale(LC_CTYPE, "rus"); // вызов функции настройки локализация консолы

int chislo;

cout<<"Выведите число: ";

cin>>chislo; //ввести число

/* Использование hex для вывода шестнадцатеричного числа*/

cout<<"Число "<"<

<

/* Использование oct для вывода восьмеричного числа*/

cout< "<

<

/* Использование setbase для вывода десятичного числа*/

cout<<"Число "< "<

return 0;

}

Результат работы программы на рисунке 1.

Рис. 1.

Литература:

  1. Х. М. Дейтел, П. Дж. Дейтел. Как программировать на С++: Пятое издание. Пер. с англ. — М.: ООО «Бином-Пресс», 2008 г. — 1456 с.: ил.
  2. Страуструп, Бьярне. Программирование: принципы и практика использования C++.: Пер. с англ. — М.: ООО «И. Д. Вильяме», 2011. — 1248 с.: ил.
  3. С. В. Глушаков, А. В. Коваль, С. В. Смирнов. Язык программирование С++. Учебный курс. Харьков «Фолио» Ростов-на-Дону «Феникс» 2001. — 490 с.
  4. Р. Лафоре. Объектно-ориентированное программирование в С++: 4-Е издание. Питер 2004. — 922 с.
  5. Дэвис, Стефан,. С++ для «чайников», 4-е издание.: Пер. с. англ.: — М.: Издательский дом «Вильямс», 2003, — 336 с.: ил.: Парал. тит. англ.
Основные термины (генерируются автоматически): соответствующий стандартному, соответствующий стандартному выводу, объект класса ostream, системы счисления, системе счисления, выходной поток, применения манипуляторов, вывода поток байтов, общем случае, оператор cout, соответствующий стандартному вводу, выходной поток нуль-символа, выходной поток символа, Основание системы счисления, различные манипуляторы потоков, десятичной системе счисления, основания системы счисления, основание системы счисления, Методика применения манипуляторов, операциях ввода байты.

Обсуждение

Социальные комментарии Cackle
Задать вопрос