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

Форматирование ввода и вывода определяется различными флагами состояний формата, перечисленными в классе ios. Эти состояния определяются битами числа типа long int (см. таблицу) Эти флаги читаются функцией-элементом flags, устанавливаются функцией setf() и сбрасываются функцией unsetf(). Есть два варианта функции setf():

long ios::setf(long);

long ios::setf(long, long);

Первым аргументом является набор флагов, объединенных операцией побитового ИЛИ(|) (см. таблицу). Вторым аргументом является специальная битовая маска, определяющая, какую группу флагов можно модифицировать(изменять):

Для чтения и установки текущих флагов потока используется функция:

long ios::flags();

long ios::flags(long);

В первом случае функция возвращает текущие флаги потока, а во втором – присваивает флагам значение, сообщаемое параметром, и возвращает прежнее значение флагов.

adjustfield = internal | left | right

basefield = dec | oct | hex

floatfield = fixed | scientific

Пропуск пробельных символов управляется флагом ios::skipws в перечислимой переменной состояния. Флаг skipws обычно устанавливает пропуск пробельных символов. Очистка этого флага (например, при помощи setf) выключает пропуск пробельных символов. Отметим также специальный манипулятор "приемника", ws, который позволяет игнорировать пробельные символы.

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

Флаг Бит числа Назначение
skipws 0x0001 пропуск пробельного символа на вводе
left 0x0002 вывод с левым выравниванием
right 0x0004 вывод с правым выравниванием
internal 0x0008 заполнитель после знака или указателя системы счисления (знак числа выводится с левого края, а число – с правого, остальное заполняется символами fill)
dec 0x0010 десятичное преобразование
oct 0x0020 восьмеричное преобразование
hex 0x0040 шестнадцатеричное преобразование
showbase 0x0080 показать на выходе указатель системы счисления
showpoint 0x0100 показать позицию десятичной точки(на выходе)
uppercase 0x0200 вывод шестнадцатеричных значений буквами верхнего регистра (экспонента также Е)
showpos 0x0400 показать знак "+" для положительных чисел
scientific 0x0800 использовать запись чисел с плавающей точкой с выводом экспоненты Е например, 12345E2
fixed 0x1000 использовать запись чисел с плавающей точкой типа 123.45
unitbuf 0x2000 буфер потока опорожняется после каждой операции помещения
stdio 0x4000 потоки stdout и stderr опорожняются после каждой операции помещения

Пример: Вывести на экран таблицу квадратов и квадратных корней чисел от 1 до 5.

#include <iostream.h>

#include <math.h>

Main()

{ double n=1.0,kv,kvk;

cout<<" число\tквадрат\t\tкорень квадратный\n";

cout<<"_________________________________________\n";


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: