Флаги форматирования

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

adjustfield 
basefield
boolalpha
dec
fixed
floatfield 
hex
internal
left
oct
right
scientific 
showbase
showpoint
showpos
skipws
unitbuf
uppercase

Эти значения используются для установки или очистки флагов форматирования с помощью таких функций, как setf() и unsetf().

Флаги Назначение
Пробельных символов

Когда установлен флаг skipws, ведущие пробельные символы, или символы пропуска(пробелы, символы табуляции и новой строки), отбрасываются при выполнении ввода в поток. Когда флаг skipws сброшен, пробельные символы не отбрасываются.

Выравнивание

Когда установлен флаг left, результат выравнивается по левому краю. А когда установлен флаг right, результат выравнивается по правому краю. Когда установлен флаг internal, числовое значение дополняется пробелами, чтобы заполнить поле между каким-либо знаком или основным символом. Если ни один из этих флагов не установлен, результат выравнивается по правому краю по умолчанию.

Системы счисления

По умолчанию числовые значения выводятся в десятичной системе счисления. Однако основание системы счисления можно изменить. Установка флага oct приведет к выводу результата в восьмеричном представлении, а установка флага hex — в шестнадцатеричном. Чтобы при отображении результата вернуться к десятичной системе счисления, достаточно установить флаг dec.

Основание системы счисления

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

Отображение чисел

По умолчанию при использовании экспоненциального представления чисел отображается строчной вариант буквы "е". Кроме того, при отображении шестнадцатеричного значения используется также строчная буква "х". После установки флага uppercase отображается прописной вариант этих символов.

Установка флага showpos вызывает отображение ведущего знака "плюс" перед положительными значениями.

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

После установки флага scientific числовые значения с плавающей точкой отображаются в экспоненциальном представлении. Когда установлен флаг fixed, вещественные значения отображаются в обычном представлении. Если не установлен ни один флаг, компилятор сам выбирает соответствующий метод представления.

Разное

При установленном флаге unitbuf буфер сбрасывается после каждой операции вставки.

Если установлен флаг stdio, потоки stdout и stderr сбрасываются после каждой операции вывода.

Флаги форматирования обычно хранятся как длинные целые значения(long int), и их могут устанавливать различные функции-члены класса ios.