Что такое boolalpha в c

Что такое boolalpha в c

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

МанипуляторНазначениеФункция
boolalphaУстанавливает флаг boolalphaВвод-вывод
decУстанавливает флаг decВвод-вывод
endlВыводит символ новой строки и сбрасывает потокВывод
endsВставляет в поток нулевой символ (‘\0’)Вывод
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 для значения лжи. Рассмотрим, например, следующую программу.

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

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

Источник

Урок №209. Функционал классов ostream и ios. Форматирование вывода

Обновл. 15 Сен 2021 |

На этом уроке мы рассмотрим функционал классов ostream и ios в языке С++.

Форматирование вывода

Есть два способа управления параметрами форматирования вывода:

флаги — это логические переменные, которые можно включить/выключить;

манипуляторы — это объекты, которые помещаются в поток и влияют на способ ввода/вывода данных.

Для включения флага используйте функцию setf() с соответствующим флагом в качестве параметра. Например, по умолчанию C++ не выводит знак + перед положительными числами. Однако, используя флаг std::showpos, мы можем это изменить:

Также можно включить сразу несколько флагов, используя побитовый оператор ИЛИ ( | ):

Чтобы отключить флаг, используйте функцию unsetf():

Многие флаги принадлежат к определенным группам форматирования. Группа форматирования — это группа флагов, которые задают аналогичные (иногда взаимоисключающие) параметры форматирования вывода. Например, есть группа форматирования basefield.

Флаги группы форматирования basefield:

oct (от англ. «octal» = «восьмеричный») — восьмеричная система счисления;

dec (от англ. «decimal» = «десятичный») — десятичная система счисления;

hex (от англ. «hexadecimal» = «шестнадцатеричный») — шестнадцатеричная система счисления.

Эти флаги управляют выводом целочисленных значений. По умолчанию установлен флаг std::dec, т.е. значения выводятся в десятичной системе счисления. Попробуем сделать следующее:

Ничего не работает! Почему? Дело в том, что setf() только включает флаги, он не настолько умен, чтобы одновременно отключать другие (взаимоисключающие) флаги. Следовательно, когда мы включаем std::hex, std::dec также включен и у него приоритет выше. Есть два способа решения данной проблемы.

Во-первых, мы можем отключить std::dec, а затем включить std::hex:

Теперь уже результат тот, что нужно:

Второй способ — использовать вариацию функции setf(), которая принимает два параметра:

первый параметр — это флаг, который нужно включить/выключить;

второй параметр — группа форматирования, к которой принадлежит флаг.

При использовании этой вариации функции setf() все флаги, принадлежащие группе форматирования, отключаются, а включается только передаваемый флаг. Например:

Язык C++ также предоставляет еще один способ изменения параметров форматирования: манипуляторы. Фишка манипуляторов в том, что они достаточно умны, чтобы одновременно включать и выключать соответствующие флаги. Например:

В общем, использовать манипуляторы гораздо проще, нежели включать/выключать флаги. Многие параметры форматирования можно изменять как через флаги, так и через манипуляторы, но есть и такие параметры форматирования, которые изменить можно либо только через флаги, либо только через манипуляторы.

Полезные флаги, манипуляторы и методы

Флаг:

Манипуляторы:

1 0
true false
1 0
true false

Флаг:

Манипуляторы:

Флаг:

uppercase — если включен, то используются заглавные буквы.

Манипуляторы:

uppercase — используются заглавные буквы.

nouppercase — используются строчные буквы.

1.23457e+007
1.23457E+007
1.23457e+007
1.23457E+007

Флаги группы форматирования basefield:

dec — значения выводятся в десятичной системе счисления;

hex — значения выводятся в шестнадцатеричной системе счисления;

oct — значения выводятся в восьмеричной системе счисления.

Манипуляторы:

dec — значения выводятся в десятичной системе счисления;

hex — значения выводятся в шестнадцатеричной системе счисления;

oct — значения выводятся в восьмеричной системе счисления.

Теперь вы уже должны понимать связь между флагами и манипуляторами.

Точность, запись чисел и десятичная точка

Используя манипуляторы (или флаги), можно изменить точность и формат вывода значений типа с плавающей точкой.

Флаги группы форматирования floatfield:

fixed — используется десятичная запись чисел типа с плавающей точкой;

scientific — используется экспоненциальная запись чисел типа с плавающей точкой;

showpoint — всегда отображается десятичная точка и конечные нули для чисел типа с плавающей точкой.

Манипуляторы:

fixed — используется десятичная запись значений;

scientific — используется экспоненциальная запись значений;

showpoint — отображается десятичная точка и конечные нули чисел типа с плавающей точкой;

noshowpoint — не отображаются десятичная точка и конечные нули чисел типа с плавающей точкой;

setprecision(int) — задаем точность для чисел типа с плавающей точкой.

Методы:

precision() — возвращаем текущую точность для чисел типа с плавающей точкой;

precision(int) — задаем точность для чисел типа с плавающей точкой.

Если используется десятичная или экспоненциальная запись чисел, то точность определяет количество цифр после запятой/точки. Обратите внимание, если точность меньше количества значащих цифр, то число будет округлено. Например:

Источник

Форматированный ввод-вывод в C++

В этом уроке мы вернемся к используемым ранее операторам cin и cout для рассмотрения их в организации форматированного ввода-вывода. Для управления вводом-выводом в C++
используются :

Флаги позволяют установить параметры ввода-вывода, которые будут действовать во всех последующих операторах ввода-вывода до тех пор, пока не будут отменены. Манипуляторы вставляются в операторы cin(cout) и устанавливают параметры текущего оператора ввода-вывода.

Использование флагов

Флаги позволяют включить или выключить один из параметров вывода на экран. Для установки флага вывода используется следующая конструкция языка C++:

cout.setf(ios::flag)

Для снятия флага конструкция:

cout.unsetf(ios::flag)

Здесь flag — имя конкретного флага.

Если при выводе необходимо установить несколько флагов, то можно воспользоваться арифметической операцией «или» (|). В этом случае конструкция языка C++ будет такой:

cout.setf(ios::flag1 | ios::flag2 | ios::flag3)

В данном случае flag1, flag2, flag3 — имена устанавливаемых флагов вывода. В таблице ниже приведены некоторые флаги форматного вывода с примерами их использования.

Флаги удобно использовать в тех случаях, когда следует изменить параметры всех последующих операторов ввода-вывода. Использование большего количества флагов для управления одним оператором ввода-вывода не совсем удобно. Еще одним способом форматирования является использование манипуляторов непосредственно в операторах cin и cout.

Использование манипуляторов форматирования

Манипуляторы встраиваются непосредственно в операторы ввода-вывода. С одним из них (endl) вы уже знакомы. В таблице ниже приведены основные манипуляторы форматирования с примерами. Для корректного их использования необходимо подключить библиотеку iomanip с помощью оператора #include

ФлагОписаниеПример использованияРезультат
rightВыравнивание по правой границе1
true
decВывод величин в десятичной системе счисления (по умолчанию)r=-25
octВывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной)p=27
hexВывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной)p=0x17
uppercaseИспользовать прописные буквы в шестнадцатеричных цифрахp=1.466730e+002
fixedФиксированная форма вывода вещественных чисел (по умолчанию)

Другими способами управления шириной поля вывода с помощью операторов являются:

При использовании операторов cin и cout фактически происходит ввод-вывод в текстовый файл. При вводе текстовым файлом является клавиатура, а при выводе — экран дисплея. Cin и cout фактически являются именами потоков (о них мы поговорим в следующих уроках), которые отвечают за ввод и вывод в текстовый файл. Поэтому многие рассмотренные возможности форматированного ввода-вывода будут использоваться и при обработке текстовых файлов.

Источник

Что такое boolalpha в c

3. Одним из самых интереснхх флагов формата новой библиотеки ввода/вывода является флаг boolalpha. Этот флаг можно установить либо непосредственно, либо с помощью манипулятора Iphii- Интересным этот флаг делает то, что он позволяет реализовать ввод и вывод значений булева типа, т. е. ключевых сло ие и false, вместо которых раньше обхчно приходилось использовать соответственно 1 для истинного значения и 0 для ложного.

Использование флага формата boolalpha ♦include using namespace

cou > b; здесь можно ввести true false

cout Введенное значение: b;

Примерный результат работы программы:

Перед установкой флага формата boolalpha: 1 О После установки флага формата boolalpha: true false Введите значение булева типа: true Введенное значение: true

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

дельно для потока cin и отдельно для потока cout. Как и в случае с другими флагами формата, установка флага boolalpha для одного потока вовсе не подразумевает его автоматической установки для другого потока.

Глава 8. Введение жтему ввода/вывода C++ 259

1. Выполните еще раз упражнения 1 и 2 из раздела 8.3, только теперь, вместо

функций-членов и флагов формата, используйте манипуляторы ввода/вывода.

2. Составьте инструкцию для вывода числа 100 в системе счисления с отображением основания системы счисления (Ох). Для выполнения задания воспользуйтесь манипулятором setiosflagsO.

Пользовательские функции вывода

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

МанипуляторОписаниеПример использованияРезультат
setw(n)Определяет ширину поля вывода в n символовr=253
setprecision(n)Определяет количество цифр (n-1) в дробной части числаr=171
octВывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной)r=375
hexВывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной)p=FD
uppercaseИспользовать прописные буквы в шестнадцатеричных цифрахp=FD
nouppercaseИспользовать строчные буквы в шестнадцатеричных цифрахp=1.466730e+002
fixedФиксированная форма вывода вещественных чисел (по умолчанию)