Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

0006 002.449 036

0005 002.236 025

0004 002.000 016

0003 001.732 009

0002 001.414 004

0001 0000001 001

Void main ()

{

double x;

cout.precision (4);

cout.fill ('0');

cout << "x\tsqrt(x)\tх^2\n";

for (x = l.0; x<=6. 0; x++)

{

cout. width (4);

cout << x << ’\t’;

cout.width (6);

cout << sqrt (x) << ’\t’;

cout.width (3);

cout << x*x << ' \n ';

}

}

Эта программа выводит на экран небольшую таблицу значений переменной х, ее квадратного корня и квадрата:

X sqrt(x) x^2

С каждым потоком связан набор флагов, которые управляют форматированием потока. Они представляют собой битовые маски, которые определены в классе ios как данные enum -типа fmt_flags. Сами флаги принадлежат типу fmtf lags, который определен следующим образом:

typedef int fmtflags;

Флаги форматирования имеют следующее назначение:

boolalpha значения булевского типа вставляются и извлекаются в виде слов true и false

hex значения целого типа преобразуются к основанию 16 (как шестнадцатеричные)

dec значения целого типа преобразуются к основанию 10

oct значения целого типа преобразуются к основанию 8 (как восьмеричные)

basefield = dec | oct | hex флаги dec, oct и hex взаимно исключают друг друга

fixed числа с плавающей точкой выводятся в формате с фиксированной точкой

scientific числа с плавающей точкой выводятся в научной записи (т.е., +n.хххЕ+уу)

floatfield = scientific | fixed флаги scientific и fixed взаимно исключают друг друга

showbase выводится основание системы счисления в виде префикса к целому числовому значению (например, число 10FE выводится как Ох10FЕ)

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

showpos при выводе положительных числовых значений выводится знак плюс

uppercase заменяет определенные символы нижнего регистра на символы верхнего регистра (символ "е" при выводе чисел в научной нотации на "Е" и символ "х" при выводе 16ричных чисел на "X")

left данные при выводе выравниваются по левому краю поля

right данные при выводе выравниваются по правому краю поля

internal добавляются символы-заполнители между всеми цифрами и знаками числа для заполнения поля вывода

adjustfield = left | right | internal флаги left и right взаимно исключают друг друга

skipws ведущие символы-заполнители (знаки пробела, табуляции и перевода на новую строку) отбрасываются

unitbuf выходной буфер очищается после каждой операции вставки в поток

Прочесть текущие установки флагов позволяет функция-член flags () класса ios. Для этого используется следующий прототип этой функции:

fmtflags flags () const;

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

fmtflags flags (fmtflags fmtfl);

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

fmtflags setf (fmtflags mask);

fmtflags setf (fmtflags fmtfl, fmtflags mask);

Первая функция-член неявно вызывает функцию flags (mask | flags ()) для установки битов, указанных параметром mask, и возвращает предыдущие значения флагов. Второй вариант функции присваивает битам, указанным параметром mask, значения битов параметра fmtfl, а затем возвращает предыдущие значения флагов. Например, следующий вызов функции setf () устанавливает для потока cout флаги hex

и uppercase:

cout.setf (ios:: hex | ios:: uppercase);

Сбросить установленные флаги можно с помощью функции-члена unsetf () класса ios, имеющей следующий прототип:

void unsetf (fmtflags mask);

Она сбрасывает флаги, заданные параметром mask. Следующий пример демонстрирует некоторые флаги:

# include <iostream>

<== предыдущая лекция | следующая лекция ==>
Форматирующие функции-члены | Манипуляторы ввода-вывода
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 404; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.