Меню Закрыть

Манипуляторы ввода вывода c

Содержание

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

Манипулятор Назначение Функция
boolalpha Устанавливает флаг boolalpha Ввод-вывод
dec Устанавливает флаг dec Ввод-вывод
endl Выводит символ новой строки и сбрасывает поток Вывод
ends Вставляет в поток нулевой символ (‘’) Вывод
flush Сбрасывает поток Вывод
hex Устанавливает флаг hex Ввод-вывод
internal Устанавливает флаг internal Вывод
left Устанавливает флаг lеft Вывод
noboolalpha Сбрасывает флаг boolalpha Ввод-вывод
noshowbase Сбрасывает флаг showbase Вывод
noshowpoint Сбрасывает флаг showpoint Вывод
noshowpos Сбрасывает флаг showpos Вывод
noskipws Сбрасывает флаг skipws Ввод
nounitbuf Сбрасывает флаг unitbuf Вывод
nouppercase Сбрасывает флаг uppercase Вывод
oct Устанавливает флаг oct Ввод-вывод
resetiosflags
(fmtflags f)
Очищает флаги, заданные в переменной f Ввод-вывод
right Устанавливает флаг right Вывод
scientific Устанавливает флаг scientific Вывод
setbase
(int base)
Устанавливает основание системы счисления равной значению base Вывод
setfill
(int ch)
Устанавливает символ-заполнитель равным значению переменной ch Вывод
setiosflags
(fmtflags f)
Устанавливает флаги, заданные в переменной f Ввод-вывод
setprecision
(int p)
Устанавливает количество цифр точности(после десятичной точки) Вывод
setw(int w) Устанавливает ширину поля равной значению переменной w Вывод
showbase Устанавливает флаг showbase Вывод
showpoint Устанавливает флаг showpoint Вывод
showpos Устанавливает флаг showpos Вывод
skipws Устанавливает флаг skipws Ввод
unitbuf Устанавливает флаг unitbuf Вывод
uppercase Устанавливает флаг uppercase Вывод
ws Пропускает ведущие пробельные символы Ввод

Для использования манипуляторов, которые принимают параметры, необходимо включить в свою программу заголовок .

Совет программисту

Одним из самых интересных флагов форматирования, добавленных в новую библиотеку iostream, является флаг boolalpha. Его можно установить либо напрямую, либо путем использования манипуляторов boolalpha() и noboolalpha(). Дело в том, что установка флага boolalpha позволяет вводить и выводить булевы значения с помощью ключевых слов true и false. Обычно нужно было вводить число 1 для значения истины и число 0 для значения лжи. Рассмотрим, например, следующую программу.

Читайте также:  Как открыть email почту

Вот пример работы этой программы.

Очевидно, что после установки флага boolalpha логические(булевы) значения вводятся и выводятся с помощью слов true и false. Как видно из текста этой программы, флаг boolalpha необходимо установить для потоков cin и cout отдельно, Как и установка всех флагов форматирования, установка флага boolalpha для одного потока не означает, что он установлен и для другого.

Система ввода/вывода С++ включает второй способ изменения параметров форматирования по­тока. Для этого используются специальные функции, называемые манипуляторами (manipulators), которые могут включаться в выражения ввода/вывода. Стандартные манипуляторы показаны в таблице.

Манипулятор
Назначение Ввод/вывод
dec Ввод/вывод данных в десятичной форме ввод и вывод
endl Вывод символа новой строки с передачей в поток всех данных из буфера вывод
ends Вывод нулевого символа вывод
flush Передача в поток содержи­мого буфера вывод
hex Ввод/вывод данных в шест­надцатиричной системе ввод и вывод
oct Ввод/вывод данных в восьме­ричной форме ввод и вывод
resetiosflags(long f) Сбрасывает флаги, указанные в f ввод и вывод
setbase(int base) Устанавливает базу счисле­ния равной параметру base вывод
setfill(int ch) Устанавливает символ заполнения равным ch вывод
setiosflags(long f) Устанавливает флаги, указанные в f ввод и вывод
setprecision(int p) Устанавливает число цифр после запятой вывод
setw(int w) Устанавливает ширину поля равной w вывод
ws Пропускает начальный символ-разделитель ввод

Для использования манипуляторов с параметрами в программу необходимо вклю­чить заголовочный файл iomanip.h.
Манипуляторы могут использоваться в составе выражений ввода/вывода. Ниже представлен пример программы, использующей манипуляторы для изменения формата вывода:

#include
#include
int main()
<
cout
#include
main ()
<
cout
int main()
<
char s [80];
cin >> ws >> s;
cout

педагогические науки

  • Дмитриев Владислав Леонидович , кандидат наук, доцент, доцент
  • Башкирский государственный университет
  • МАНИПУЛЯТОРЫ ПОТОКОВ
  • ФОРМАТИРОВАННЫЙ ВВОД-ВЫВОД
  • ЯЗЫК ПРОГРАММИРОВАНИЯ С++
Читайте также:  Как настроить авторизацию wifi

Похожие материалы

Каждый поток, как и всякий объект, в любой момент времени характеризуется состоянием, определяющим свойства потока. Состояние описывается набором трех групп параметров:

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

Форматирование представляет собой преобразование последовательности байт потока в соответствии с установленными правилами. Так, при выводе в поток форматирование позволяет получать данные в определенном виде. При вводе форматирование позволяет считывать последовательность байт из потока как значение определенного типа. Флаги и переменные форматирования позволяют задать установленные в потоке правила форматирования, действующие при выполнении операций >.

Класс ostream наследован от класса basic_ios, который, в свою очередь, наследуется от ios_base. Класс ios_base хранит информацию, описывающую состояние формата. Управлять флагами и устанавливать значения переменных форматирования можно или на основе методов класса ios, или с помощью специальных функций – манипуляторов. Так, используя функции-члены ios_base, можно управлять шириной поля, основанием чисел для отображения целых, количеством знаков после запятой, и другими форматами [1-3].

Манипуляторы потоков используются в C++ при решении вопросов, связанных с форматированным вводом-выводом (например, задание точности, ширины полей, пропуск символов-разделителей во входном потоке, и т.д.) и находятся в пространстве имен std. Использование в программе параметризованных манипуляторов потока возможно только после включения заголовочного файла iomanip; непараметризованные манипуляторы потоков могут использоваться и без iomanip (например, endl, dec, oct, hex). Ниже в таблице 1 приведены краткие сведения по использованию некоторых манипуляторов потоков.

Таблица 1. Манипуляторы потоков

Читайте также:  1С получить идентификатор строки табличной части

Описание, пример использования

Установка ширины поля: cout

Список литературы

  1. Прата С. Язык программирования С++. Лекции и упражнения, 5-е изд.: Пер. с англ. – М.: Вильямс, 2007. – 1184 с.
  2. Страуструп Б. Язык программирования С++. Специальное издание. – М.: Бином, 2004. – 1054 с.
  3. Stroustrup Bjarne. The C++ programming language / Bjarne Stroustrup. – Fourth edition. – Boston: Addison-Wesley, 2013. – 1368 p.

Электронное периодическое издание зарегистрировано в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), свидетельство о регистрации СМИ — ЭЛ № ФС77-41429 от 23.07.2010 г.

Соучредители СМИ: Долганов А.А., Майоров Е.В.

«>

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.