Zyava
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Флаги и функции форматирования Работа всех потоковых объектов из библиотеки IOSTREAM.H контролируется флагами форматирования, определяющими такие параметры, как, например, основание системы счисления при выводе целых чисел и точность представления чисел с плавающей запятой. Флаги можно устанавливать с помощью функции setf(), а сбрасывать — с помощью функции unsetf (). Есть два варианта функции setf() с одним аргументом типа long и с двумя. Первым аргументом является набор флагов, объединенных с помощью операции побитового ИЛИ (|). Возможные флаги перечислены в таблице Флаг | Назначение | skipws | при вводе пробельные литеры пропускаются | left | выводимые данные выравниваются по левому краю с дополнением символами-заполнителями по ширине поля | right | выводимые данные выравниваются по правому краю с дополнением символами-заполнителями по ширине поля (установлен по умолчанию) | internal | при выравнивании символы-заполнители вставляются между символом знака или префиксом основания системы счисления и числом | dec | целые числа выводятся по основанию 10 (установлен по умолчанию); устанавливается также манипулятором dec | oct | целые числа выводятся по основанию 8; устанавливается также манипулятором oct | hex | целые числа выводятся по основанию 16; устанавливается также манипулятором hex | showbase | при выводе целых чисел отображается префикс, указывающий на основание системы счисления | showpoint | при выводе чисел с плавающей запятой всегда отображается десятичная точка, а хвостовые нули не отбрасываются | uppercase | шестнадцатеричные цифры от А до F, а также символ экспоненты Е отображаются в верхнем регистре | showpos | при выводе положительных чисел отображается знак плюс | scientific | числа с плавающей запятой отображаются в научном формате (с экспонентой) | fixed | числа с плавающей запятой отображаются в фиксированном формате (без экспоненты) | unitbuf | при каждой операции вывода буфер потока должен очищаться | stdio | при каждой операции вывода буферы потоков stdout и stderr должны очищаться | Вторым аргументом является специальная битовая маска, определяющая, какую группу флагов можно модифицировать. Имеются три стандартные маски: adjustfield = internal | left | right basefield = dec | oct | hex floatfield = fixed | scientific Оба варианта функции setf() возвращают значение типа long, содержащее предыдущие установки всех флагов. Все перечисленные флаги, а также константы битовых масок и упоминавшиеся манипуляторы dec, hexи octявляются членами класса ios - базового в иерархии всех классов ввода-вывода. В этот класс входят, помимо прочего, функции fill() , precision ( ) и width ( ) , тоже связанные с форматированием выводимых данных! Функция fill( ) устанавливает переданный ей символ в качестве символа-заполнителя. Аналогичные действия выполняет манипулятор setfill () . Вызванная без аргументов, функция возвращает текущий символ-заполнитель. По умолчанию таковым служит пробел. 204 Когда установлен флаг scientificили fixed, функция precision() задает точность представления чисел с плавающей запятой, в противном случае определяет общее количество значащих цифр. Аналогичные действия выполняет манипулятор setprecision() . По умолчанию точность равна 6. Вызванная без аргументов, функция возвращает текущее значение точности. Функция width() определяет минимальную ширину поля вывода в символах. Если при выводе количество символов оказывается меньшим ширины поля, оно дополняется специальными символами-заполнителями. После каждой операции записи значение ширины поля сбрасывается в 0. Аналогичные действия выполняет манипулятор setw( ) . Вызванная без аргументов, функция возвращает текущую ширину поля. Манипуляторы setfill () , setprecision() и setw(), также являющиеся членами класса ios, относятся к категории параметризованных, и для работы с ними необходимо дополнительно подключить к программе файл IOMANIP.H. | Всего записей: 324 | Зарегистр. 04-05-2006 | Отправлено: 17:10 01-03-2007 | Исправлено: Zyava, 17:21 01-03-2007 |
|